Interview: On High Level Languages

An interesting discussion about higher level languages and reinventing data science.

…it will be a disappointing moment in technology history if our  definition of a language was a thing that had ‘for’ loops and had to involve this very low-level, procedural way of approaching creating functionality.

Ultimately, what we want to do with language is we want to express ourselves and get the things we want to do done. My theory of that is the more we can have that done automatically by a system, the better for us.

Declarative languages like SQL do that to an extent. But Stephen Wolfram talks about something even higher level. Here are some examples.

.

Watching Experts Code – One of the Few Pleasures in Life

Once in a while you get a chance to see experts code right in front of you. I had this experience when I was watching SICP videos. The code unravels right in front of your eyes. Some times the code is like poetry (of a different kind). Some times it is like a fascinating story.

I was reminded of that when I was watching Learn Python Through Public Data Hacking – by David Beazley . Look at these little fragments. It struck me that even if you don’t know Python, you can look at these fragments of code, and figure out what is going on. That is the beauty of an expert  at work.

code_like_poetry_2

code_like_poetry

I have a few friends who can do this and it is always a pleasure watching them. Doug used to say that you learn a lot from watching experts work. Whether the act is writing code or painting a picture, or chiseling a piece of wood, when you watch creation at work it is always a joy.

Context:

I have been trying to find videos to show my students learning Python. We are trying a few experiments. Learning Python through games and Learning Python by hacking data. I want them to have great videos to watch and get mesmerized by these experts at work.

 

If You Are a Student Interested in a Software Job…

If you are a student and is really interested in a software job,  some actual practice may help. Here are a few things you can do:

  1. Start early – even in the very first year of your college. Just spend a few hours each week.  Pick an easy language to learn like Python or Ruby.
  2. Learn to program  by writing lots of small useful tools, games, apps.
  3. Share your programs with others and ask for feedback. Ask them whether they find it useful.
  4. Share the code on github (it is free) or other repositories.  Post the link on Geek forums and request feedback too (but please don’t spam the groups). Put your github link in your profile, email signature and on your resume.
  5. Don’t get upset if people criticize it. All feedback is good when you are learning. Don’t take it personally. If some one cares enough to look at it and give you comments, that is a good thing.
  6. Once in a while, take all the stuff you have written, factor out common code and create libraries/modules that you can reuse. Go back and change the programs to reuse these libraries.
  7. Repeat 2-6  as many times as you can, every week, every month.
  8. Look at some cool open source projects and join in. Contribute in a small way. Keep exploring.
  9. When you attend tech interviews, tell them about the stuff you have written. Point them to the links. Share the feedback your received  and your journey of learning and iterating.
  10. Don’t worry that if you train in programming language X but the job is for Y that you may not qualify. Except in a few cases, companies are trying to hire smart people with lots of initiative, who are willing to constantly learn and explore.
  11. It may be a good idea to earn while you learn. It is not just the money, but it is the feeling that someone values what you have done enough to pay for it.
  12. Find a master programmer to work with.  How do you know they are masters? Pretty simple. Take a piece of code they have written and read it. It will read like an essay – elegant, beautiful and clear. A couple of years of apprentice with such great programmers will do more to accelerate your learning than any other activity.

Just learning the standard languages they teach you in your institution is not enough. Practice and feel the joy of programming. You will know whether you like it or not.  If you enjoy it, it will show, when you talk to people about it.

Python Jobs in India

My visits to Quora are pretty infrequent and random. But something got me there this morning and when I go, I try to answer at least a couple of questions (and they get tweeted). Today’s focus was on finding out who is hiring Python programmers in India. You can look through the answers but I have a feeling that we have not even scratched the surface. Need to keep digging.

Worth Sharing

I hope Rex the author of Foundation of Game Design… does not mind sharing this (entire) Introduction. Long before I heard this story, I heard Sid telling me that he got started programming by typing BASIC programs into the computer. Many of you can relate to variations of this story.

So that Christmas morning, in a giddy fever, I ripped open the red-and-white candy-cane wrapping paper. It was everything I had hoped for: a state-of-the-art Commodore Vic-20. It had a whopping 5K of memory, the latest cassette-tape storage drive, and a display of 16 colors. The computer at school could just display two colors: green and black. I was in heaven! I fumbled with the instructions and, with trembling hands, carefully plugged my gleaming new Vic-20 into the family TV set and switched it on.

Nothing happened. The TV was completely blank, except for a small, calmly blinking blue square at the top left corner of the screen.

“Where are the games?” I thought, “Where’s Ms. Pac Man? Where are the aliens?”

I jiggled the power cable and fiddled with the wires at the back of the TV. But, no, there was just that steady blue, blinking square, silently mocking me. This blue square, I discovered, was called the “cursor.” I hated it and felt sick.

The games, it turned out, came on audio cassettes that you could load into the computer by hooking up the cassette player and pressing the play button. But you had to buy them. They cost $20 each. The nearest shop that sold them was a 45-minute drive, in a car, over a mountain. It was impossible—there was just no way. And, anyway, I was supposed to be using this thing to “do my homework.”

But in the computer’s box I found a book about BASIC programming. I had no idea what that meant and couldn’t understand anything in that book at all. It was full of all kinds of bits of scrambled English words and numbers written in big capital letters that were supposed to make the computer do things. “Programming code,” it was called. Maybe this was just stuff for grown-ups? “No,” I thought, “computers are for children, and grownups are scared of them.” And so I persisted. At the very back of the book, I found a section called “Programs to try.” My eye fell across the words “Killer Comet.” It was a video game! Beneath it was a long list of inscrutable codes. But I finally figured out that if I could type these codes into my Vic-20, I could play a game.

That was it!

If “programming” means “you can play video games for free,” I was going to figure out programming. I spent the next two days in a frenzy, reading through the book and typing in all those codes, trying to get Killer Comet to work. I had barely any idea what I was doing and my computer kept displaying “Syntax Error! Syntax Error! Syntax Error!” over and over again whenever I tried to run the program. I was pulling my hair out and wanted to scream! But then, late on the second day, something miraculous happened—it worked:

A small white square moved from the top of the screen to the bottom of the screen.

If you pressed the right number of keys in the right way, the square disappeared.

That was all.

It was the most beautiful thing I’d ever seen in my life.

And that’s when I discovered that making video games is way, way, way more fun than playing them. And so, here, Dear Reader, you have that book that I truly believe should come in the box with every new computer. Hope you have as much fun reading it as I did writing it!

I think writing games is one of the best ways of teaching programming. It  develops multiple skills – algorithms, strategy, UI design, visual design, event handling, AI and more. So most of the courses I teach and internships are starting with games.

Machine Learning – A Few Links and Tweets

On Machine Learning from A free book on ML – A First Encounter of Machine Learning by Max Welling

The first reason for the recent successes of machine learning and the growth of the field as a whole is rooted in its multidisciplinary character. Machine learning emerged from AI but quickly incorporated ideas from fields as diverse as statistics, probability, computer science, information theory, convex optimization, control theory, cognitive science, theoretical neuroscience, physics and more.
The second, perhaps more important reason for the growth of m
achine learning is the exponential growth of both available data and computer power. While the field is build on theory and tools developed statistics machine learning recognizes that the most exiting progress can be made to leverage the enormous flood of data that is generated each year by satellites, sky observatories, particle accelerators, the human genome project, banks, the stock market, the army, seismic measurements, the internet, video, scanned text and so on.

On why this book was written

Much of machine learning is built upon concepts from mathematics such as partial derivatives, eigenvalue decompositions, multivariate probability densities and so on. I quickly found that these concepts could not be taken for granted at an undergraduate level.

Machine learning will be one of the most important tech trends over the next three to five years for innovation” http://t.co/kBFPHlANHa

Startups making machine learning an elementary affair http://t.co/FkF7TSy45R

Use Cases Machine Learning on Big Data for Predictive Analytics http://t.co/1AvQHXkgr4 #ml usecases

A startup journey, the improvement in Python’s data science capabilities and hosted machine learning http://t.co/Vx4g7lIM1X #techtrends

RT @woycheck: Zico Kolter wants to use machine learning to analyze electrical current behavior and provide details about your power bill (@…

Microsoft Research Machine Learning Summit: April 22-24, 2013 http://t.co/x9YxylgMeX

RT @siah: A free ebook by Max Welling “A First Encounter with Machine Learning” http://t.co/5KjCCylL3Y

Google Hires Brains that Helped Supercharge Machine Learning | Wired Enterprise | http://t.co/cVgZpNri4c http://t.co/2mJ7ggZE2n

RT @siah: PyMADlib: A Python wrapper for MADlib – an open source library for scalable in-database machine learning algorithms http://t.c

Peekaboo: Machine Learning Cheat Sheet (for scikit-learn) http://t.co/6UyYWO74

Panels and Discussions

This is a panel from Churchill Club featuring
Peter Norvig, Director of Research, Google ,Gurjeet Singh, Co-founder & CEO, Ayasdi, Jeremy Howard, President and Chief Scientist, Kaggle

Meta

Once in a while, I go and gather my recent tweets and create a Tweet Cloud (a project developed by a student). I find some interesting topics, save the tweets and start a blog. I have written about this Linked Tweet Cloud a couple of times.

tweets_on_machine_learning

On Respecting the Intrinsic Limitations of the Human Mind

 On respecting the intrinsic limitations of the human mind and approaching the (programming) task as Very Humble Programmers – From The Humble Programmer

… the amount of intellectual effort needed to design a program depends on the program length. It has been suggested that there is some kind of law of nature telling us that the amount of intellectual effort needed grows with the square of program length. But, thank goodness, no one has been able to prove this law. And this is because it need not be true. We all know that the only mental tool by means of which a very finite piece of reasoning can cover a myriad cases is called “abstraction”; as a result the effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. In this connection it might be worth-while to point out that the purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.

the tools we are trying to use and the language or notation we are using to express or record our thoughts, are the major factors determining what we can think or express at all! The analysis of the influence that programming languages have on the thinking habits of its users, and the recognition that, by now, brainpower is by far our scarcest resource, they together give us a new collection of yardsticks for comparing the relative merits of various programming languages.

Programming will remain very difficult, because once we have freed ourselves from the circumstantial cumbersomeness, we will find ourselves free to tackle the problems that are now well beyond our programming capacity.

Hierarchical systems seem to have the property that something considered as an undivided entity on one level, is considered as a composite object on the next lower level of greater detail; as a result the natural grain of space or time that is applicable at each level decreases by an order of magnitude when we shift our attention from one level to the next lower one. We understand walls in terms of bricks, bricks in terms of crystals, crystals in terms of molecules etc. As a result the number of levels that can be distinguished meaningfully in a hierarchical system is kind of proportional to the logarithm of the ratio between the largest and the smallest grain, and therefore, unless this ratio is very large, we cannot expect many levels.

I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts.

Once in a while you come across an essay that is timeless. A lot has changed in the world of software development, since this talk was delivered (in 1972). By a funny coincidence, my programming career started in 1972 and I was blissfully ignorant of the challenges Dijkstra was talking about. It has been both an exhilarating and humbling experience to be a developer for a while.

We are Greedy. We Want More.

Julia is a new language for data analysis. From four of the origianl developers – f Jeff BezansonStefan KarpinskiViral Shah, and Alan Edelman on why they invented Julia.

We are power Matlab users. Some of us are Lisp hackers. Some are Pythonistas, others Rubyists, still others Perl hackers. There are those of us who used Mathematica before we could grow facial hair. There are those who still can’t grow facial hair. We’ve generated more R plots than any sane person should. C is our desert island programming language.

We love all of these languages; they are wonderful and powerful. For the work we do — scientific computing, machine learning, data mining, large-scale linear algebra, distributed and parallel computing — each one is perfect for some aspects of the work and terrible for others. Each one is a trade-off.

We are greedy: we want more.

That is a bit of good kind of greed which makes you build stuff because you want more and benefit an entire community in the process.

More at A Julia a Meta Tutorial. 

Pycon India 2013

If you are interested in Python, PyCon is definitely a conference worth attending. If you are working with Python, it may be a great place to share your knowledge with others and you always meet cool developers there.

PyCon India this year is on August 30- September 1st. Please take a look at the topics and vote for the ones you like. If you have experiences to share, please submit a speaking proposal here.

 

Teaching Learning, Books and Technology – Links

Some useful links on Teaching, Learning, Books and Technology’s role:

  1. Visual Notes and Narrated Art: Benefits of Student-Created Videos on YouTubeToday in Saskatoon, Saskatchewan, I shared the six minute video, “Developing Communication Skills With YouTube & iPad Videos” with teachers, librarians, and school division educational consultants. This video was originally shared on the “Learning Showcase Website” of Yukon Public Schools in Oklahoma. Inspired by the work of Giulia Forsythe and …
  2. A Radio Spot from Sir Ken Robinson Reminding Voters About the Importance of TeachersThis evening I had some wonderful conversations with John McGettigan and Vincent Mamer about the upcoming Saskatoon Festival of Learning in February 2014, as well as the ways Saskatoon community leaders are coming together under the banner of creativity to support high quality schools for every student. Both John and …
  3. Auryn Releases Children’s eBook Apps for Summer ReadingParents and teachers fret over the summer months about the potential for the “summer slide,” a documented drop in reading comprehension and word recognition scores in students who spend their summer vacations without the daily reading time they are accustomed to in school. At the same time, summer break is …
  4. HarperCollins Reduces the Price of 700 eBooks to .99HarperCollins has reduced the cost of 700 of their ebooks to .99 on Amazon and Barnes and Noble. Many of these titles either reside in the public domain or are considered short stories. Still, if you are looking for a new book to read, there are plenty of affordable goodies …
  5. Digital Comic Review: Female Force: Tina FeyBluewater Comics is famous for doing biographies of famous people. They make other comics as well, but the bio-comics get a lot of press, often showing up on websites far removed from the comics blogs. This has, over the years, become kind of a schtick. Bluewater makes a comic about …
  6. High Resolution 6 Inch 2560 x 1600 Technology Being DevelopedThe pixel war is upon us and smartphones with high-resolution 1080p five inch displays are quickly becoming commonplace. Even second tier smartphone makers now offer these devices at rock bottom prices. The big players in the game have to differentiate themselves from the competition. There is a new six inch …
  7. Penguin’s First To Read Program Entices Readers With Early ReleasesBook discovery is becoming an insurmountable obstacle, and it’s not just the indie authors who are struggling. Large publishing houses are having to find more and more creative ways to reach out to readers, especially in the current climate in which readers are becoming accustomed to interacting with their favorite …
  8. Flipping Book Update Allows Off-line ReadingFlipping Book, an international platform for ebook publication and distribution, announced last week its update that allows readers to consume content offline, even while keeping its strict anti-piracy controls in place. The platform, based on a somewhat pricey but valued software, incorporates a real-time page turning view as users read. …
  9. The New Indie Author: Artisanal PublishingA new publishing industry term was born at this year’s Digital Book World event, and it quickly spread to become the standard. Hybrid authors were a focal point of the discussions, meaning authors who in some way were both traditionally published and self-published. The method to how they came to …
  10. Playdough & Alphabet StampsThis was a serendipitous idea that came while the boys were playing with playdough today. As I watched them play with the cookie cutters, I grabbed our Melissa & Doug Alphabet Stamps (my favorite stamps ever) and encouraged a little learning in the midst of their playdough fun. Here’s what …
  11. If we can drop soldiers into schools, why not enlist teachers into the army?Following the announcement of the Troops to Teachers scheme, our anonymous blogger takes a wry look at the ‘transferable skills’ shared by teachers and soldiersDear Army,I look forward to joining up as soon as possible using your new fast-track-for-teachers route. I am delighted that I will now be able to …
  12. How we used technology to develop student-led learning in scienceTeacher David Andrews explores how tablets and apps can complement traditional learning techniquesOur year 6 students have been using iPads and iPods since September on a one-to-one basis to support learning, develop productivity, independence and impact on pupil progress across the curriculum.The devices haven’t been used for everything; but they …

Meta:

This links were found using TopicMinder – Topic Alert service.