Close

Vignettes of Terrible Art Teachers

I sit down in the class and start setting up my gear.  Brushes, paint, palette, all pulled out from my bag.  I forgot to bring brushes on the trip from San Francisco to New York so I ran to a Blick the day before and bought the cheapest ones I could use for the class.  Some simple synthetic brushes that would work.  The teacher walks over, picks a brush up, and goes, “Oooooooh look at your fancy brushes.”  I have literally met the man for an hour and he’s already insulting my gear.  I laugh and say they’re just cheap ones from Blick and he scrutinizes them, eyes scrunched up, like I’m lying, before putting them down.

He instructs us to make a grisaille of our still life setup, copying from a photo we found online.  I copy it, matching the values and he observes me do this the entire time.  I used alkyd paints so they would be dry the next day.  The next day he comes in and he gives everyone a long lecture on how we have to make our underpainting a lot lighter or else his method won’t work.  I look around the room.  I’m the only one with a dark grisaille.  Why didn’t he tell me that before the paint dried?

The second day I talk to a student from the school that’s hosting us and show her my funky Bob Ross paintings as a joke.  She immediately points to the middle of the painting and say, “What?! You can’t do that!”  I say something like they’re just a joke but I can kind of do whatever I want.  “I’m going to tell your teacher.  He needs to talk to you about this.”  She storms away angry.  I’m dumbfounded anyone would have this reaction at an art school, but shrug it off thinking, “Nah she’s not going to do anything.”

The next day she takes the teacher to lunch.  The day after that, he takes me to lunch.  He spends the entire lunch trying to convince me to not attend this school or study their methods because of my Bob Ross paintings.  He said I wouldn’t fit in at that school, and that my views on art are different from everyone else’s.  I just flat out told him, “You’re right.  This place is a damn cult.  There’s no way I’d study here if people react this way to a joke Bob Ross painting.”

It took him an hour to gradually crush my aspirations to be an artist, and it almost worked.  Thankfully, I have a high dose of “Fuck You” in my blood to counteract people like that.  I shrugged it off a week later and went back to studying anyway.  But, I can’t imagine how someone else would have taken it.  That kind of interaction would have derailed many students permanently.

Copying & Repetition

You ever hear parents complain about their kids TV habits?  “Oh my god! If I hear Blues Clues one more time! Timmy plays that damn video over and over and over.”  What Timmy is doing is learning.  Timmy probably also mimics his parents and siblings actions, copies their speech patterns, observes their habits, and repeats them over and over.

Copying other people and repetitive training is the foundation of education, but in today’s education this has been thrown out in favor of “conceptual learning”.  The idea of conceptual learning is if you expose someone to the concept of a subject then they’ll have a higher more refined understanding of the topic than simple copying and repetition (what they call “rote learning”).  The reality is conceptual models of education simply find students lucky enough to naturally know the topic, and then leave the rest to fail and flounder.

In the united states, there is even a slight racist tinge to the attitude of conceptual vs. rote education.  I’ve heard many people say that “Asians really can only copy others because they use rote education in school.”  If you’ve spent any time studying Asian art and culture you know this isn’t true at all, and is a very racist attitude.  Whether it’s the Ruby Programming language, or BABYMETAL, or Old Boy, it’s entirely wrong to think that Asians are unoriginal little robots because they learned by rote.

There’s also a strange fear associated with rote learning that says if you learn rote you’ll somehow be less “creative”.  The problem with this is that nearly every creative thing you do requires rote practice.  The idea that I’m going to learn the major scale on a guitar by just learning the concept of a major scale is laughable.  Nobody who teaches music thinks that.  I learned guitar from repetition and copying other guitarists.

Painting might be the next discipline someone who believes in “concepts” puts forward as an example of avoiding rote learning.  Again, there’s a very long history or repetitively copying the works of other artists. There’s even a term for it: “Master Copy”.  Every great artist and almost all art schools have copying other artists as a way to learn to paint or draw.

If doing rote copying turned painters or musicians into unoriginal robots then all of them would be that way.  Painters and musicians are frequently put forward as the pinnacle of creativity, so clearly rote copying doesn’t impact your originality.  In fact, the dividing line between amateur and professional is how much they practice, and practice is repetition. Artists do small studies in a formal way. Musicians play scales their whole life, again repetitively copying.

How about writing?  Again, you learn to write by first copying the alphabet, then small stories, then trying to write on your own, and reading and trying to emulate your favorite authors.  Copying and repetition is all there.  Memorizing a poem is copying and repetition.  Reading and pulling out quotes and phrase structures is also copying and repetition.  Every author who is any good copies other authors and repeatedly writes almost obsessively.

Martial Arts, Dance, Singing, even Mathematics is full of copying and repetition.  Denying the role of these two practices in education denies what is a foundational aspect of human learning.  This is even the foundation of non-human learning, so why is it that people in the computer science field think there is no role for copying and repetition?

Rote in Computer Science Education

Copying and repetition is necessary in education because it builds instinctual basic skills someone needs to understand the more abstract conceptual parts of a discipline.  Nobody thinks you can memorize all of Jazz, but they definitely know that if you can’t instinctively play a scale then you’re probably not going to be able to play Jazz.  Nobody thinks you can memorize all of art, but if you drawing or color isn’t instinctual then you are going to struggle.

I believe Computer Science education could benefit greatly from copying and repetition at the beginner level and possibly later.  Copying is how a vast majority of programmers learned to code, but many CS educators deny this fact.  If you’re imagining yourself at 12 trying to learn to code, then I’m betting you had either a book or website with code that you copied and made work.  This should just be how we start people in programming, and not the current method of conceptual “weed out” classes.

Repetition is a mostly un-researched aspect of CS education that I’d like to explore more.  I believe that repetition happens naturally if you have copying as a base part of the educational experience.  However, I feel that drilling and repeating aspects of a language that need to be instinctual would improve retention.  For example, if students had to memorize all the lexemes and syntax structures of a language while they’re copying small working programs.

I think the main reason why this is ignored or vilified in CS is the same reason that most programmers simply can’t teach:  They are so far removed from their beginner experience that they forget that they actually learned to code via rote learning.  We see it all the time when a programmer attempts to teach non-developer and immediately tries to get them to use Vim and write C code.

The experienced programmer has completely forgotten the nights they spent repeatedly copying other people’s code and writing and rewriting buggy code to make it work.  To them this isn’t “rote” because they were so deep in it that they can’t see all the implied rote work actually being done.  They were also 10, so their brains were very bad at meta-cognition and can’t really say why they thought anything, so how can their recollection of their self-education possibly be accurate?

Hopefully Computer Science will adopt the educational style I’ve found in Music for beginner, and painters for intermediate developers.   I believe an early training that involves a mixture of rote (scales, chords, ear training) followed by copying and modifying (learn a song and try to improvise) will benefit beginners.  For intermediate programmers I think the Painting style of education would work well:  copy master works and create your own studies of simple subjects.

Adopting these two models would make CS accessible to more people, and make it easier for beginners to transition to intermediate and then advanced skills.

Killing Magic

I’m sitting with a friend who is an accomplished musician.  Record deals, multiple albums, and you’ve probably heard her songs on a TV show or commercial or two. She tells me that she doesn’t want to teach music because she’s afraid it would lose its magic.  There’s a mystical mystery about how she makes music and she’s afraid she’ll ruin that special quality if she has to figure out how she does it.  It won’t flow the same.

My response was something that I’ve believed my whole life:  “Magic just hides something’s true beauty.  It’s a con.  A trick that makes you love the magic rather than the real thing.  Once you actually learn how it really works, sure, the magic goes away, but then you get to fall in love with the beauty of the real thing. Real things are always simpler and more beautiful than the magic hiding them.”

Or something like that.  I probably actually sounded a lot less cool than that, but that was the idea.  I’ve found that magic just obfuscates and blurs what I’m really seeing.  Whether that magic is an accident of my perception of reality–or an actual sleight of hand by someone else–doesn’t matter.  What does matter is once I strip the magic away, and find the real simple principles hidden by the wizard, I see the real thing is better.

Of course sometimes I strip the magic away and find that the real thing is an ugly turd hiding in a golden box.  A lot of programming languages and technology are like this.  There’s all this bluster and flourish pushing a magical view of their benefits.  Then I dig a little and this magic simply hides a terrible design, poor implementation, and random warts.  It seems everyone in technology aspires to nothing more than creating enough of a code mannequin to hold up an invisible emperor’s gown.

One of the reasons people resent my opinions on technology is I have an ability to crush their fantastical magical views of technology.  It’s hard to be an Apple fan when there’s a guy pointing out that they frequently allow developers to invade their customer’s privacy, stole wages from employees, and make shitty  hardware that crashes and reboots if you don’t log in fast enough.  You can’t be enamored with Python if someone points out that its APIs are constantly asymmetrical and that Python 3 has a shitty UTF-8 strings implementation.

My mission in life has been to illuminate magic to expose the ugliness or beauty it hides because I believe magic enslaves people to others.  With magic you can convince them of almost anything, and even change the magic and they’ll keep following the wizard’s edicts.  Stripping the magic away gives people the freedom to choose what their reality will be, rather than rely on someone else to define it for them.

A key element of this mission is education.  I proved with my books that there really is no magic to learning to code.  The people who could do it weren’t special geniuses. Almost anyone could learn to do it given enough time and the right learning material.  Once it was clear that programmers aren’t special, it freed others from the magical aura surrounding programming and opened the practice up to a much wider range of people.

Education then becomes the practice of breaking magic to expose reality.  I study a topic and figure out how people are really doing it.  I find all the tricks they use, strip away the things that are just bluster and showmanship, find the lies they use to puff up their personas, and then teach the simplest real version of the topic.  This then opens the topic to a much wider range of people who can now enjoy it and improve their own lives.

Many times the practitioners aren’t purposefully trying to hide what they do because they don’t even know how they do it.  Most practitioners simply cargo cult a set of random practices they’re sure are the secret sauce.  Usually these secret practices are nothing more than extraneous rituals getting in the way of the real task at hand.  This educational acetone sometimes embarrasses these practitioners since nobody wants to be seen as believing in pointless rituals and magic.  That’s fine, but really they should be happy to find another path to what they love.  One that’s not full of obfuscation and rituals that only serve to enslave them to a limited palette of skills.

 

Learn More Python Rough Draft Up

My move to Miami has pushed out the deadlines for most of my books by a month, so May is when the majority of the content for Learn Python 3 The Hard Way will drop in May.  I’m done with the editing round with my publisher so the PDF will drop later today.  I’m also toying with doing an ePub but I swear if one person using a janky Linux ePub reader complains about the meta-data being wrong before telling the project to fix their meta-data I’ll pull it down.  Life is too short to convince angry Linux ePub developers to fix their code.

I’m also going to try my future book writing process starting today.  I’ve wanted to incorporate chat into my book publishing process but haven’t really found a chat I liked.  The Gitter chat seems like it’d work pretty well so I’m going to try that on the rough draft of the Learn More Python The Hard Way book.  You just have to go to https://gitter.im/lcthw/more-python-help  from the top of the book and you’ll be able to chat with me and everyone else.

If this works out then future books will be released this way:

  1. I hack on the idea until I’ve got a rough draft going.
  2. I post the rough draft, and put a room for the book into the LCTHW Gitter.
  3. I’ll hang out in there while I work on the book, answer questions, and change the rough draft based on feedback.

My goal is to get earlier feedback from people on how my exercises work and also give people free access to early releases.

 

I Moved to Miami

I moved to San Francisco in 2010 to work at a startup.  At the time I was living in NYC and the technology hacking scene there was utter garbage.  It was dominated by these stupid “artists” who had a strangle hold on the local scene and ostracized anyone who wasn’t cool, hip, GGG, libertine hacker guys like them.  I still remember wondering where the hell they all got their thick rimmed black glasses?  Did they rob a Warby Parker or something?

At first living in San Francisco was great, and it really was the technologist’s paradise I envisioned.  Then the tech bros showed up.  As the money in tech prolapsed into the local economy the brogrammers in the industry confused their acquisition of a loan with being real super dudes.  This the fueled the anti-intellectual libertines of San Francisco to skip a couple burning man orgies and fight the brogrammers for the intestines of the city.

This really makes the city an ugly place to live and work, and I hope in the future technology companies simply avoid San Francisco.  Not because San Francisco is necessarily a bad city.  The entire bay area definitely has a huge problem with corruption and graft, more than any other city I’ve lived in.  Rather, this constant fight between the wannabe libertines just trying to get whipped at The Citadel, and the brogrammers living off Zuck’s scraps, ends up ruining what could be a fantastic place to live.

San Francisco will always be a bitter sweet place for me in my life.  On the one hand, my books took off there and I was able to start a new career doing something I really enjoy.  I also learned to paint, which I will always cherish for the rest of my life.  I loved some women so deeply it still makes me sad that they didn’t work out in the end.  San Francisco was also where I had the most terrible heart breaks of my life.  Where I saw the most violence and governmental indifference I’d ever seen.  Where I encountered groups of people who abused and fed off their peers for tiny scraps of small points on worthless startups, and other groups who attacked their fellow denizens for simply having a job.

My fondest memory of San Francisco will be the sunny days I spent at Union Square, playing guitars I made and talking to random wonderful weird regulars.  Union Square healed the hands broken by a terrible NYC teacher and his “improved” scales.  Without that warm sunshine and an open place to just do scales for hours I would have given up on guitar entirely.  Now my hands str all fixed up and I’ll always remember what that felt like.

I’ll also remember that I first learned to draw at Fort Mason on March 13, 2014.  I mean I think that’s right, but that’s close enough for the memory.  I’ll remember sitting there, looking at the docks, drawing the scene, feeling that blissful peace I have when I paint or draw now, listening to my lover hum and draw along with me.  It’ll always be a permanent loving memory for me that helps me realize not everything in San Francisco was bad.

I’ll also miss all the incredible museums and art schools.  I owe the Legion of Honor, the De Young, the SF MOMA, and the SFAI so much for teaching me about art from all time periods.  If you live there and you aren’t going to the museums on a regular basis you are truly missing out on one of the gems of the US museum world.  If you can also pop a flight down to LA and visit the Getty you definitely should.  The Getty is a work of art on its own and I probably went there 20 times for whole days just because.

New York is that lover I sometimes check out to see if she’s doing alright.  She was actually cool and way out of my league. I just wasn’t cool enough for her at the time.  San Francisco will always be that lover who made me feel awesome and successful while cheating on me and calling me a “fag nerd”.  Those places are all over for me now, except for the occasional visit.  Goodbye, it was fun…almost…I mean yeah you know what I mean.

Why Miami?

The first reason is simply it was time for a change.  I actually wanted to leave a few years ago but things always kept me there.  Relationships, art schools, work, or just too many guitars I didn’t want to ship.  My time in San Francisco was very lonely and my only social interactions were with the women I dated, so it ended up that relationships meant a lot to me even if they were flawed and doomed to fail.  Once there was a break in this pattern I was able to finally plan a move.

The second reason is I have a goal of living and studying art overseas in the next few years.  There’s one tiny wrinkle in this:  California is ruthless about collecting taxes from people who live overseas.  Everyone I talked to said definitely move to a state without income tax before you move overseas or California will grab your bank account without any warning.  I did some research, and most states without income tax are freezing cold or fairly lame.  Florida wasn’t that appealing, but Miami seemed really great when I visited.  Clean, modern, everyone is generally happy, great weather, and easy to live here.  I don’t even need a car here.

I’m also looking to improve my landscape painting, marine painting, and art in general, and Miami has a killer art scene.   I’d say way better than San Francisco in terms of actual art sales, although so far the Museums here are nothing compared to San Francisco’s.  Miami just fits my idea of a new place to paint different landscapes and improve my artistic practice while also saving money on rent.

The final reason is I wanted a place that wasn’t so pissed off and depressed all the time.  I tell people when you live in a city you can sort of feel a personality permeating everything.  The personality of New York was a bipolar court jester.  There were days you could tell NYC was pissed off at you, other days where Gotham loved you like a mother, and most of the time it was fucking hilarious.  San Francisco’s personality is definitely that of a depressed but brilliant failed artist.  It was always sad that it wasn’t considered a greater city and jealous everyone overlooked it’s good qualities, so it took that out on everyone living there.   I guess in many ways I kind of adopted the personalities of the cities while I lived there.

I don’t know what Miami is like yet, but I’m getting the sense that Miami actually doesn’t give a fuck what I think about her.  Miami is looking too fabulous to care.

 

 

Today’s Portrait Painting Class

Portraits are definitely my most difficult subject so I attend as many painting classes as I can. Here’s today’s class progress shots:


Just a simple drawing and then basic painting of the head, did this in the first two settings. Next shot:


Color and exposure isn’t very good on that but shows the progress.


The final painting at the end of class. Actually I was done last session but then decided to goof off with the tattoos and background for no real reason.

The End Of Coder Influence

I get an email from someone who tells me that Reddit has decided to remove my book from their list of suggested readings for Python until I update the book to Python 3.  They made this decision about two weeks prior to when I received the email, so I went to look at my traffic and sales to see if there was an impact.  Weirdly, my sales were up and my traffic was about the same.  It had no impact.

Once a year I go through my Python book and I try to convert all the code to Python 3 as a test.  I do this with the eye of a total beginner, looking for things that will trip them up and cause problems.  Bad error messages, confusing syntax, broken libraries, and inconsistencies.  Every year I run into nearly the same problems:  strings are difficult to use, error messages don’t have variable names, libraries don’t really help with strings, and there’s too many inconsistent string formatting systems.  So I decided to see again what it would take to make my book Python 3 and ran into the same issues all over again.

To put it bluntly, the reddit community responsible for teaching beginners to code censored my book as a power play to get me to force Python 3 on unsuspecting beginners.  The language does not work for them, and they were attempting to use their influence to enact change in my books, rather than use that influence to improve Python for beginners.

And it didn’t work.  I still had the same sales and the same traffic.  I actually think if all Programming Reddit rose up and demanded Python 3 have better error messages regarding strings (a minimum usability bar) they would be ignored too.  In fact, I kept seeing over and over people pointing out blog posts, reddit threads, HN threads, and tweet storms as if these were highly influential which then did nothing.

A few days ago I went through another test of Python 3 and ran into the same problems.  I get enough people emailing me about Python 3 that I decided I needed to work out a list of reasons why Python 3 is broken for beginners as of today.  Originally I was going to write it fairly simply and not worry about appeasing the coders, out of fear they would retaliate like they always do and boycott my book even more.  But, I remembered that after countless blog posts about how terrible of a person I am and how terrible my books are, I still end up helping millions of people a year and still have the same sales.

I decided to just write what I felt and fuck whatever programmers think.  I wrote it, put in a couple of jokes and trolls, and then posted it.  Fuck it, I have a cold and don’t give a fuck.

Immediately people started insulting me, telling me I’m wrong (yet not reading the post, LOL). Then the HN posts start, then Reddit.  I don’t read those so people shove them into my email and Twitter stream.  I was tired and not into defending myself so I just deleted Twitter off my phone and go sleep some more.  Enjoy the sun.  Did some painting.  Hung out with friends.  Who gives a fuck about what a bunch of angry lonely coders think about my thoughts?

Yet, here’s where everyone I know becomes deathly afraid of the coders.  These groups of programmers used to have large sway over what was successful and chosen, but at the same time were horribly uninformed about basic computer science.  They ran to Node.js because of “events are better than threads” and had no idea Hoare or coroutines existed.  They manually went to hand convert all Python 2 code to Python 3 code, rather than just asking why the Python 3 VM can’t just…run Python 2 code too.  Then they believe the mega load of bullshit that this is impossible despite all proofs and evidence stating otherwise.  For all their claims of superiority for having once bought a copy of The Art of Computer Programming the previous generation of programmers are sadly uninformed about basic shit.

We all feared them, because their incredibly uninformed opinions and complete lack of humor or human decency could sink or swim entire companies.  Get slagged on HN and you’re done for.  I’ve heard of VCs actually threatening to strip away funding over bad HN reactions like HN is on the same level as the food critic of the NYT.  So what was going to happen to me?

Honestly, I’ve been trying to get out of the technology industry since 2008.  This industry sucks, and largely because of the abusive previous generation of programmers.  My goal has been to just make their influence on my life as small as possible so I can go on doing things I love like painting.  Fuck them.  But, a man’s gotta eat so I keep doing my work so I can make enough of a living to keep helping folks and doing what I love.

What are the results of their insane hatred of my latest stance against Python 3?  Am I doomed to never have any more sales again?

Nope.  Same traffic.  Same sales.

I believe that the influence of the previous generation of programmers is largely gone.  I can’t exactly say why, but I think it’s because they consistently back terrible ideas over and over.   They also tend to have no idea what will be successful or not.  The reason is they base their opinion of a technology on superficial things related more to whether the tech fits their tribe than its actual merits.  When my book first came out the HN crowd and other “professionals” said it wouldn’t work.  Same for many successful startups, technology, and ideas.  Meanwhile, the things they do back end up being terrible and we all regret following their hive mind.  Can anyone say OpenSSL?

I also believe the newer generation of programmers are more well rounded and have a general distaste of this kind of tribal fascist bullshit we have in open source.  I can’t really prove that, but it’s a feeling I’ve been having for a couple years now.  This next generation is different. I just can’t quite say how other than they seem to not believe the same things as the previous generations.

About a year ago I stopped reading HN and Programming Reddit because of this.  I don’t worry about the vindictive assholes out there who feel any questioning of their tribal beliefs is an affront to their person.  I now think the actual influence of the hive mind on anything outside of the tiny little set of Silicon Valley Programmers Who Read HN bubble is nothing.  If you think their influence matters then either you’re working on something as insignificant as they are, or it really doesn’t matter and you should just ignore them and move on.

Keep making cool stuff and speaking your mind counter to the hive.  I think that’s the future generation’s take on programming, and I fully endorse that message.

A Day at The SF MOMA

I’ve been into using the features in my camera to take photos and directly post them to the internet. To do this I set up the buttons to make transferring easier. Then I made it easy to access all the buitl-in effects.  I have a Sony camera so it comes with most of the Instagram effects.


This is with B&W but allowing green through. 

While doing this I found I can use a couple settings to take better photos for paintings.  I can use the High Contrast B&W filter to look for interesting high contrast shapes and composition, then take a RAW image with high vibrance to get color and detail reference.

I can then load it into Lightroom Mobile or one of the Photoshop apps to alter it real quick if I want. 

I decided I wanted to use the HCB&W filter to practice composing shapes. I went to the SF MOMA to take photos. 


All I’m doing is finding interesting shapes. The high contrast makes it easier to see them.

Modern art museums are great for this.


People standing around mixed with art sculptures and piles of garbage have great shapes.


No idea if I’m violating copyright but whatever.


I was actually suffering from a throat infection that kept me from talking so I got tired.


I try to make it difficult to identify the object I’m photographing. When it’s a random metal wall that’s not hard.


Playing with depth of field.


The time of day was perfect for contrasting shapes on buildings.


I used people to alter the shapes in the scene.


Love Chuck Close.


Neon looks great in B&W.


The shapes can come from anywhere:


Neon tends to just be pure white.


Done at the Museum.

Morning Foggy Pastels

I haven’t been able to paint outside in a while, and the fog was looking great this morning, so I decided to go do something small and quick. I hit Fort Mason and took some photos:


And the same guy in color:


I need to get my sensor cleaned I guess. 


I settled on this little scene to practixe things fading into the fog. In pastels this is a little hard.


First I did a little valur study to figure out what I wanted.


Then this tiny little pastel. I didn’t want to be out there forever so kept it tiny. Here it is up close:


Just a simple impressionist study.

Watercolor Creme Brulee

I was doing more watercolor practice copying paintings out of books and I burned this one:


Burned it?! That’s right. Rather than use a hair dryer to dry watercolor I use a creme brulee torch. Since the paper is wet you can run a torch over it rapidly and it’ll dry really quick. But, obviously if you don’t pay attention or do it for too long or get too close, well, you burn the paper.

Here’s one I didn’t burn, but it had too much sizing so the color wouldn’t stick:


Sizing is a glue or sealer on the paper that lets the color soak in some, but not too much, preventing the paper from buckling. Here’s my final one for the night:


Just a simple painting with not too much color.