Archive for the ‘Uncategorized’ Category

Programming Curriculum: Never Satisfied

January 4, 2019

All that Android App Course research really got the brain cells fired up.  Particularly in the way of curriculum. The CS/Programming curriculum I offer presently is built around several factors.  The biggest factor is what I am capable of teaching. I have no professional programming experience and almost no college coursework in programming.  (OK, three courses. One in 1972 with punch cards, I do not even remember the language I used. Two courses in the 80s, one FORTRAN and the other a very bad experience with Java.)  Everything I know about programming was learned on the job; a good book and staying a couple of days ahead of the kids. This somewhat limits the level of programming I am capable of offering in my curriculum.  As a result any change in my curriculum requires a lot of work on my part. Not just designing a course but learning the language if the course is programming.

All the Android App Course research has resulted in my wanting to offer a course using Android Studio.  I learned there are several excellent ways to go for the app course but when all is said and done if the kids are going to write professional level apps with a professional tool Android Studio is the way to go.  I am also somewhat fascinated by Android Studio. Not sure why, it my just be a character flaw.  Android Studio uses Java. Hence I need to offer a Java course before I offer Android Studio. I also feel Java is one of those languages kids should have some familiarity with.  I have taught Java before, just not very well. So the project for Spring semester is to build a Java course on the fly while teaching Java and learning Java at the same time. No problem. The tricky part is going to be keeping the kids from going faster than me.  Smart buggers.

I dug around the internet looking for a Java text.  I am somewhat limited by my $0 budget, I have to find free textbooks.  I found two that seem pretty decent. “Think Java: How to think like a computer scientist” by Downey and Mayfield (2016) and “Introduction to Programming with Java” by Eck (2018).  I use Downey’s “How to Think Like a Computer Scientist: Learning with Python 3” as my Python textbook.  Excellent book for the price.  I did a quick preview of both and am going to go with the Eck book.  It seems a little bit more detailed in the chapters but since they are both free I can give both to the kids so they can have a second resource.  

A real nice thing about teaching at a small private school is I can decide to offer a course two weeks before the semester starts, get the councillor to put it in the schedule and find kids to take it, all without a major hassle with committees or administration.  The bad thing with this easy approach is that sometimes the Good Idea Fairy bites me and I get over my head, usually in available time.

So next semester I will be teaching Stats (26 seniors), Honors Algebra II (2 sophomores), Game Programming with Unity and VR (5 juniors and seniors) and two sections of Java (sophomores and juniors, numbers to be determined).  With the IT work added in I should not be too bored.

I almost forgot, I need to start working with Android Studio.  I need to find something free out there, either a book or video series, that is written for beginners.  I have found a number of things labeled “Android Studio for Beginners” but where a beginner is assumed to be someone with extensive Java programming experience.  I have to find that something this spring because if I cannot find anything truly for beginners I will have to find something I can simplify or build my own material this summer.  Always fun.


Absolutely nothing to do with computers

December 17, 2018

This is the picture I have on my home screen.  The picture has given me hours of sanity. I look at it and do not think of computers, programming, math, school or bills.  

These cabins are at the Magruder Ranger Station by Darby Montana, about 60 miles from my front door. This is the beginning of the Magruder Corridor.  The Magruder Corridor is a 122 mile dirt road from the cabins to Elk City Idaho that I believe is unique in the US. It goes smack dab through the middle of two wilderness areas, the Bitterroot Wilderness to the north and the Frank Church – River of No Return Wilderness to the south.  There is about an 80 mile stretch that you cannot get off the road with a motorized vehicle or bicycle. I have not done this road all the way on my motorcycle but it is on my bucket list. I am thinking late this coming summer is the time. The ride requires either a large gas tank or judicious use of the throttle and a lot of coasting or a spare can of gas.   I will have to do a little mileage testing. My little 650 (the bike in the picture) has a 5 gallon tank. At 40 miles to the gallon I should be good but I know from previous experience that dirt roads and low speed can use more gas than expected.

This will have to be a two day trip.  From Darby to Elk City on dirt is going to use me up so I will have to take regular fly fishing breaks.  From Elk City to Missoula by pavement is a long ride. I might just turn around and come back through the corridor.  There are pros to both routes. The road coming out of Elk City to Hwy 12 is supposed to be a knee draggers dream. I have not done it yet.  Highway 12 from Lowell to Lolo is one of the premier rides in the US. I ride it regularly. If I go back through the corridor I will have to fly fish both ways and camp overnight in the wilderness.  It might take three days if the fishing is good. Ah, gee.

It is fun to plan things like this during this time of year.  Skies are gray. Not enough snow to go boarding yet. Too icy to go mountain biking.  I went cross country skiing yesterday but it simply is not the rush boarding and biking give.  So it is time to plan for the next summer’s adventures.

There is one minor glitch to this whole thing.  If I go fly fishing for two or three days and the fishing is good the wife is going to be upset.  Lacking the subtlety a good marriage requires I would take pictures of the fish. I will show the pictures to my wife.  She will get grumpy. (She is really into fly fishing, much more than I am.)  I will have to suffer the burden.

Android App Course: so I am not done

December 14, 2018

I have been playing with LiveCode.  I made the Flappy Bird game from the free Udemy LiveCode course.  There were some of the usual glitches as with any video tutorial using an old version of the software but no big deal.  I even managed to get the game on my Android phone but due to screen sizing issues it is unplayable. I assume there is a way of adjusting the game to fit the screen size but I will worry about that later.  It is obvious this is a non-game app making environment so I probably should have found a tutorial that made a non-game app. Oh well, it is what I found first and it did give me a good idea how the IDE and the language worked.  The IDE and the language are not a major difficulty. It is definitely an option between App Inventor and Android Studio. My biggest problem is I have been coding in C based languages so long that this language would take some getting used to.  I would have no problem using LiveCode as an intro level course. I do think I would think twice about using it with students that are already familiar with Python, VB or Java. Maybe think twice but do it anyway because it is just so cool.

I found a couple of other app building possibilities.  

Jon Howard responded to one of my posts with a suggestion of looking at Basic4Android (B4A).  Not free ($59 for the cheapest version, there is a 30 day trial) but reasonable. There is a free version called B4J for desktops but it looks slightly different from the B4A. B4A looks really usable for those of us used to Visual Studio.  I was going to build a simple app with it but hit a bit of a wall, no “simple or first app” tutorials on the web site. There are a lot of tutorials on the site but nothing leaped out at me as “The Idiots Guide to Programming with B4A”. I have started digging through the YouTube offerings but that will take a while to sort junk from worthwhile.  Hopefully I can find something in 30 days.

I also stumbled on an IDE called Stencyl.  Not free and not cheap. $199/yr for the Android version.  There is a free version but it publishes only to the web. It is similar to App Inventor and Thunkable in being drag and drop.  It is a game maker like GameMaker Studio, not really a general app builder.

I revisited GameMaker Studio just to see if there were any changes in the IDE.  It has gotten expensive. There is a free version but it will not publish at all.  For the Android version it is $130 per seat. That seemed to be a perpetual license as opposed to Stencyl but still out of my range.

What a teacher uses really breaks down to the course objective.  If the objective is to end up with students able to build professional Android apps and step into industry there really is no choice, Android Studio is it.  AS is not for the faint of heart, either teacher or student. If the goal is to have the kids just build a simple Android app then the options are a bit wider than I originally expected.  App Inventor, Thunkable, LiveCode and B4A depending on time, energy and money. The time factor is how much time the teacher has to proof the various IDEs and build a course. App Inventor has a whole curriculum out there ready to go for the beginning CS teacher.  Cyril Pruszko has written a good program for teachers using LiveCode. Look here and here.  There is more than enough to get a course built to your own tastes.  With B4A you are on your own. Nothing new there but it still requires time you may not have.  

If the course objective is to build games then there are some very good options.  Unity and Corona SDK are free and there is a lot of teaching materials out there. GameMaker and Stencyl are simply to pricey for my blood and are pretty limited on their versatility.  I can build what they build with Unity for free and build a lot more other things, VR for instance.

Everything I have looked at so far has strengths and weaknesses (except Xamarin, no strengths I could find).  Nothing instantly leaps out at me and says “Use me! Use me!”. For teaching, everything, except maybe App Inventor, requires time to plan and write.  I plan to give LiveCode a go next semester with some experienced kids. I also plan to look closer at B4A and at least build a simple app with it. YouTube forever.

Scratch: kids stuff only my @#$

December 13, 2018

I can program pretty well in Scratch.  Any high school programming teacher that has been teaching programming for a few years can program in Scratch.  Even if they have never seen Scratch before they can figure it out pretty quickly. This on the other hand is not programming in Scratch.  This is the result of a Scratch god. The author of this did not sit down in front of a keyboard and hammer it out.  This is the result of hours of planning and design. At least I hope it was the result of hours of planning because if they sat down and just hammered it out I am…, well, to tell the truth I would not know what I am.  Amazed, impressed, humbled, worshiping, something. Even with planning I am several of those and more. I do plan to look at the coding for this and get some ideas.

Android App Course: the saga ends

December 10, 2018

I am done.  My brain is tired.  Here is everything I could find that will build apps for Android.  

  1. App Inventor
  2. Thunkable
  3. LiveCode
  4. Xamarin
  5. Android Studio
  6. Corona SDK
  7. Gamemaker
  8. Unity

There are more out there.  For instance I found reference to making apps with Python.  Not easily but it can be done.

I did not look at all of these in intimate detail but I did try to write an app with all of them.  Some of these I have used in classes (Corona, GameMaker, Unity) , others I just looked at in the last couple of weeks (Thunkable, LiveCode, Xamarin).  I have done a couple of week long professional development summer camps with App Inventor. I have been tempted by Android Studio for a number of years.  

Here is a very short comment on each.

  1. App Inventor – large following and lots of stuff out there for it. Has some connection issues to phone and emulator is weak.  Not for professional use.
  2. Thunkable – On the same level as App Inventor.  Plus and minuses over App Inventor. Not for professional use.
  3. LiveCode – Uses its own language which makes me leary of it.  I could not get the emulator to work.
  4. Xamarin by Microsoft – Almost nothing out there as far a good teaching material.  Some tutorials but I had difficulties trying to get them to work. It glitched on me.  Professional use.
  5. Android Studio – the premier Android app writer.  Professionals only. Has possibilities for advanced high school.
  6. Corona SDK – game writing.  Some good tutorials out there.  
  7. GameMaker – games only.  Simple 2D games. Very specific environment.  
  8. Unity – professional level 2D and VR games.  Lots of material out there.

Which to use has a lot to do with your objective.  If you want to offer a low level class where the kids get to write some simple apps and have some fun, App Inventor or Thunkable are both good options.  If you want a 2D game making course Corona SDK is a far better option than GameMaker. Corona uses Lua, a very basic scripting language that looks very traditional.  GameMaker works well but the language is a dead end as far as a stepping stone to more advanced languages. Unity has some major possibilities if your objective is a more advanced game writing course.  

If you want the kids to write real apps in a language that they can carry and use out of high school Android Studio is the only way to go. Dumbing it down for high school might take some work. Or offering some strong prerequisites is a possibility.  There is no “beginners” route for AS.

Here are my choices.

  1. App Inventor for a limited course for younger kids or beginners.  Test phone connections, twice.
  2. Corona SDK for a 2D game programming course.  Easy and the language is a traditional line code environment.
  3. Unity for a VR games.  Some good tutorials out there.  Real fun for the kids.
  4. If you want the kids to actually make a real app in a project based course there is no choice other than Android Studio.  It will take a lot of work on the teacher’s part and commitment by the students.

I was really tempted to dive farther into LiveCode but I just was not up to learning a new language.  Since Java/Javascript, Python and C# are the dominant languages for education I am not sure teaching a language that is used only in one environment is a viable direction for teaching.  This is more of a personal decision on my part. Learning any programming language will make the transition to another much easier. If I have an experienced programming student looking for an independent study I would not hesitate to have them work in LiveCode.

Xamarin seems an odd duck.  The IDE looks really sweet and being based on Visual Studio can make it very comfortable for teachers experienced with VS.  There is just nothing I could find as far as teaching materials. The tutorials I tested just did not work due I think mostly to version updates.  I looked at Xamarin University but was put off by the “experienced C# users” notice. If I am going to learn and use a professional level tool I want a lot of beginner support.

This review is 100% biased in that if I could not get the software working quickly and easily it went on my naughty list.  If I could not find a substantial amount of teaching material either in the way of documentation or good tutorials it hit the naughty list.  If the emulator had issues it hit the naughty list but it was not a deal killer. Of those that had emulators, Android Studio is the only one I had no emulator issues with.  Doing this software search has taught me emulators look cool but nothing compares to actually putting it on the phone. Putting the apk on Google Drive and opening the apk on the phone from there is slower but works.

Android Studio will take some work to bring to the high school classroom but it looks like it will be worth it.  I will not do AS this year but I will start assembling and testing material for next year. I have a couple of programming geeks that will be seniors next year.  Perfect guinea pigs.


Android App Course: The continuing saga

December 6, 2018

I have been digging and looking at suggestions.  Thunkable was pointed out to me. I tinkered for a while then handed it off to my uber-geek sophomore for evaluation.  I liked it better than App Inventor. It does have the handicap of needing an Android phone plugged into it (the emulator works but has issues) and it does not seem to work with tablets (I only have one to test with so do not take that as gospel but Doug Bergman could not get it to work with tablets either) but it does connect every time to the phone.  My test student had the most interesting comment. He said it did not have enough programming blocks so it was limited in what it could do. It also glitched out on him a couple of times. My final and admittedly limited evaluation is that it is better than App Inventor in some aspects, but just barely.

The next thing I stumbled on (I should not be stumbling on these things, they should be known to the CS education world as common language) was Microsoft Xamarin.  I had seem the word before but it was not impressed on me that it was an app builder. (I need to pay more attention to what I read.) I am in the middle of the Microsoft “Hello, Android: Quickstart” tutorial.  I have observed/learned two things so far.  First Xamarin does not seem that much different from Android Studio from the beginners point of view and second I really hate tutorials that do not match what happens on the screen as you do the steps.  I am only a short ways into the tutorial so I am evaluating the tutorial more than the Xamarin at this point but it took me 30 minutes to figure out why my UI does not want to look like the tutorial’s UI.  The only reason I figured it out was because I had worked through an Android Studio tutorial and I guessed the drag and drop process of building a UI was the same. Little things like this can really put a crimp on a teacher wanting to use a piece of software for a class.  The Microsoft Computer Science Teachers Network on Yammer  has a Xamarin group but it seems pretty dead.  I have not been able to locate anything in the way of tutorials or texts that would be useful at the beginner or high school level.  Microsoft really needs to bring back a K-12 software support and development team.

After looking at both Android Studio and Xamarin I think with work and careful writing they are usable at the high school level.  It would definitely not be an intro to programming course like App Inventor is intended for as in the APCSP curriculum but for a select course they are a possibility.  The problem is the “work and careful writing” would be a lot of work and a lot of writing and testing. Not something most teachers have time for. One of the respondents to my initial Android App Course post, Brian Meerman, is using it at the high school level with success.  It sound like the students are well prepared before taking the course.  Xamarin requires more digging.

I will continue to look for the perfect middle ground for app writing. I am still looking at Corona SDK as the best in-between programming environment but the fact it is primarily for games sticks a pretty big limitation on it if trying to build a project based course.

Android App Course with thoughts on Project Based learning and ramblings

November 28, 2018

Three days of internet digging and reading and I have some discoveries, but no surprises.

  1. Android Studio is a beast.  It took me maybe four hours to just get it installed and all the install issues fixed.  I am now working through this tutorial.  Not a bad tutorial but a lot of magic is happening.  The usual “do this” with no “why do this”. The needed knowledge to use this IDE is definitely at the professional level.  You would have to work in this every day to be able to do simple tasks. It is also Java and HTML sort of rolled together. What fun.  I would want some training in this software, not just tutorials, before I would attempt to teach normal students a comprehensive course with it. I have one student, a sophomore with an IQ in the 160s at least, working through the tutorial as a test subject.  He is doing OK but he is a major computer geek and is on the extreme end of self motivated. Not a good sample of the typical programming student but he was all I had handy.
  2. I am still not impressed with App Inventor.  It is fun and can do some great things but I would not consider it a route for a student looking to continuing in CS/programming.  That is me, I imagine there are teachers that have had success using it as a starter environment. I also have too many technical issues with it.  Firewall issues, phones not connecting to it and so on. In a perfect network with the goal of just building an app without the goal of using a real world programming tool I think it would be a success.  I have attended a summer PD on APCS Principles using App Inventor. The APCSP curriculum does get a job done but it is a bit cookbook for me and when the kids are done they are just sort of hanging there as far as understanding how to code.
  3. Corona SDK is sort of in between Android Studio and App Inventor as an app builder.  Designed to build 2D games it is much easier than Android Studio. It uses Lua, a fairly straight forward scripting language that fits with what us old school line code teachers are comfortable with.  Because it is a game builder there are some limitations as to the types of apps that can be built. That is the big difference between Android Studio and Corona, AS will build anything you can think of in the way of a GUI, Corona has limitations.
  4. Unity will build Android apps.  Again it is a game maker, not a real app builder.  For VR it is the way to go. For an app that locates the best Chinese restaurants in town, not so much.
  5. I was very surprised to find out Android apps can be built with Python.  Not easily and it requires a lot of setup using all sort of extra software but it can be done.  I do not plan on going that way.
  6. There are some other app builders out there that require a working knowledge of HTML5, CSS and Javascript.  If I ever get a working knowledge of those I may look at them. Of course if I get a working knowledge of them I may just start moonlighting as a website designer/builder.

So here are my conclusions.  If the app development process and project based learning is the goal and not coding, App Inventor is the way to go.  A beginning teacher has a nice cookbook to follow. Of course overcoming the network/phone issue needs to be addressed before diving into it.  Test everything, a lot.

If you want to make real apps Android Studio is the only real option.  A year long course with a real steep learning curve; IDE, Java, HTML. And probably a lot of prep time.  Maybe the only option for a true project based course. I plan to put some more time into looking at AS. Maybe it can be dumbed down for a high school class.  I am not hopeful.

Corona seems the easiest way to get into app building but you have to accept the gaming limitation.  Not a great route for writing an app that finds Chinese restaurants in a five mile radius. It is fairly traditional as far as a coding language which appeals to me as an old coder.

Corona is easier than Unity but Unity is much higher quality games.  VR games are not difficult in Unity and that can be a big draw to get students in seats.  App building with Unity would require a Unity course prequel or a lot of time teaching Unity before building the app.

Getting an app writing course up and running is not as simple as say getting a Python course going.  Writing code is only a part of the course objective and coding could possibly be the minor part of the course.  With AS just learning the IDE would be a major accomplishment. With a project based course there is also the issue of matching the project to the best environment to build it in.  A project that is an educational game might be best in Corona or Unity, an app with something like Google Maps might require AS or a fall back to App Inventor.

Doing a project based app course would take some good project review that may force the project to fit the programming environment the teacher is comfortable with.  A student may come in with an incredible idea that will not fit with what the teacher is familiar with. Decision time on the teacher’s part, point the student in the correct direction and hope they can go it on their own, or make modifications on the idea so it will fit what the teacher knows.  Both tracks have pluses and minuses.

Lots of head scratching involved in this whole app building project based course theme.

Android App Course thoughts

November 26, 2018

I want to develop an Android app writing course for the kids.  Something project based. It would be Android because we are a PC school and Android apps can be loaded directly from the computer to a phone which makes testing a breeze.  I have to decide on an IDE or language or something. I have used App Inventor and am less than impressed. Lots of connection issues and the language itself is pretty limited.  It is not something to write a professional app on. I have look at Android Studio and the learning curve looked a bit steep for high school. One of my daughter’s ex-boyfriends is working on his CS degree and is a programming geek.  He was going to write an app with Android Studio but backed out after working with the IDE. That makes me even less inclined to go that way. Another option, which I am starting to lean toward, is Javascript. I have done a tiny bit of research looking at Javascript but it seems to be a possibility.  Apparently Android apps can be written with Python. Since I am familiar with Python and already offer a Python course this is a strong possibility. Another direction to research.

The biggest issue I am having is the number of directions I can go.  There is simply so much available that I just do not know which way to go.  I have some sharp kids interested in doing this next semester. I can always make the course less writing apps and more looking at software to write apps and then build the app writing course for next Fall.  I think I am going to have to put some serious time into just figuring out the best option. I do not want to select a direction then find out we are in over our head.

I hate the Good Idea Fairy.

Indian Education for All (IEA) and math

November 20, 2018

I received an interesting email from my principal today.  She wanted the math teachers to send her the IEA lessons, topics or components from our math classes.  Gurk. I have no IEA lessons, topics or components in my math classes (or my CS classes for that matter).  So being a good little teacher I wandered up to one of the other math teachers and asked her what IEA she did.  Her list matched mine. But being smarter than me she had gone to the Office of Public Instruction website to see what they had.  OMG. Figuring the surface area of a tipi is not Indian Education. Switching the names of cities for a Traveling Salesman Problem to the names of reservation pow wows is not Indian Education.  Learning of seven stars in Crow astronomy and then computing their brightness is not Indian Education. Learning about tipis, reservation and pow wows and Crow astronomy is Indian Education, but each of these lessons were obviously designed to use something Indian in them just to check the IEA box.  The amount of math that can be done with just the tipi as the primary focus is quite a bit; weight estimations, number of hides needed for that surface area, length of poles for a tipi of given size (height and radius involved), nature of the cone shape when heating a volume of air (the things stay warm with a very small fire even in the winter) but all of this would have to revolve around the legacy of the tipi and the indians that used them.  Writing a math problem involving cones and then switching “cone” for “tipi” does not do the trick for me. IEA is not switching the words but teaching the history behind the words. Now we are in a History/Social Studies/Native American Studies course with a lot of math. Not a bad idea but not what most math teachers are ready for.

There are also some cultural issues involved with IEA.  Most whites put all Indians in one pot. Indians are as different as Europeans.  Different histories, different cultures, different languages, and just plain different.  That Crow astronomy problem would not be popular in a Blackfeet school. Most of the tribes get along now (sort of) but they have been forced into it by their common foe, whites and the US Government.  IEA is not as easy at it would seem.

Now that I am thinking about IEA I think I can come up with something relevant especially with the tipi idea.  Something better than switching “cone” for “tipi”. I am not going to touch the Crow astronomy (I am Blackfeet and could care less about Crow astronomy) but I could definitely see it of being of interest in a Crow classroom if it were expanded.  The TSP and pow wows is just plain stupid.

CS quotes to live by

November 13, 2018
  1. “Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.” – Rick Cook
  1. “Lisp isn’t a language, it’s a building material.” – Alan Kay.
  1. “Walking on water and developing software from a specification are easy if both are frozen.” – Edward V Berard
  1. “They don’t make bugs like Bunny anymore.” – Olav Mjelde.
  1. “A programming language is low level when its programs require attention to the irrelevant.” – Alan J. Perlis.
  1. “A C program is like a fast dance on a newly waxed dance floor by people carrying razors.” – Waldi Ravens.
  1. “I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.” – Bjarne Stroustrup
  1. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” – Eric S. Raymond
  1. “Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.” – Mosher’s Law of Software Engineering
  1. “I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing.” – Oktal
  1. “Fine, Java MIGHT be a good example of what a programming language should be like. But Java applications are good examples of what applications SHOULDN’T be like.” – pixadel
  1. “Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.” – Bill Clinton
  1. “The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.” – E.W. Dijkstra
  1. “In the one and only true way. The object-oriented version of ‘Spaghetti code’ is, of course, ‘Lasagna code’. (Too many layers).” – Roberto Waltman.
  1. “FORTRAN is not a flower but a weed — it is hardy, occasionally blooms, and grows in every computer.” – Alan J. Perlis.
  1. “For a long time it puzzled me how something so expensive, so leading edge, could be so useless. And then it occurred to me that a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.” – Bill Bryson

34.  “In My Egotistical Opinion, most people’s C programs should be indented six feet downward and covered with  dirt.” – Blair P. Houghton.

  1. “When someone says: ‘I want a programming language in which I need only say what I wish done’, give him a lollipop.” – Alan J. Perlis
  1. “The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language.” – Ron Sercely
  1. “Good design adds value faster than it adds cost.” – Thomas C. Gale
  1. “Python’s a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck.” – Cory Dodt
  1. “Talk is cheap. Show me the code.” – Linus Torvalds
  1. “Perfection [in design] is achieved, not when there is nothing more to add, but when there is nothing left to take away.” – Antoine de Saint-Exupéry
  1. “C is quirky, flawed, and an enormous success.” – Dennis M. Ritchie.
  1. “In theory, theory and practice are the same. In practice, they’re not.” – Yoggi Berra
  1. “You can’t have great software without a great team, and most software teams behave like dysfunctional families.” – Jim McCarthy
  1. “PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.” – Jon Ribbens
  1. “Programming is like kicking yourself in the face, sooner or later your nose will bleed.” – Kyle Woodbury
  1. “Perl – The only language that looks the same before and after RSA encryption.” – Keith Bostic
  1. “It is easier to port a shell than a shell script.” – Larry Wall
  1. “I invented the term ‘Object-Oriented’, and I can tell you I did not have C++ in mind.” – Alan Kay
  1. “Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry” – Ted Nelson
  1. “The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.” – Randall E. Stross
  1. “If McDonalds were run like a software company, one out of every hundred Big Macs would give you food poisoning, and the response would be, ‘We’re sorry, here’s a coupon for two more.’ “ – Mark Minasi
  1. “Beware of bugs in the above code; I have only proved it correct, not tried it.” – Donald E. Knuth.
  1. “Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success.” – Tom DeMarco
  1. “I don’t care if it works on your machine! We are not shipping your machine!” – Vidiu Platon.
  1. “Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.” – Christopher Thompson
  1. “Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” – Bill Gates
  1. “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” – Brian W. Kernighan.
  1. “People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.” – Donald Knuth
  1. “First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.” – George Carrette
  1. “Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.” – Larry Wall
  1. “Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.” – Alan Kay
  1. “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.” – Seymour Cray
  1. “To iterate is human, to recurse divine.” – L. Peter Deutsch
  1. “On two occasions I have been asked [by members of Parliament]: ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.” – Charles Babbage
  1. “Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” – Linus Torvalds
  1. “Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Martin Golding
  1. “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.” – C.A.R. Hoare