Sunday, January 17, 2010

Is anything new/unique to Python?

Looking at haskell I see some of my friends from python. Significant whitespace, list comprehensions, interators (sort of like laziness), tuples. And then it struck me that all of these features in python are derivative. Not that that is a bad thing. But I was surprised that I couldn't think of anything definitively new/unique to python. (Obviously the way these things are combined/balanced is unique)

Hey, internets, did python invent any language features/syntax?

The only thing that I can come up with is maybe the __blah__ (unders before and after) style of exposing syntax overriding.

Monday, January 4, 2010

One New Language a Year: Haskell

Another year starts and so I try again to do the "Language a Year" thing. Last year it was a close decision between smalltalk and haskell. I went with smalltalk and for various reason it didn't really grab me and I ended up abandoning my efforts and switching to emacslisp.

So hopefully I've learned a little bit about the focus and dedication it takes to work on a new language and I'm ready to try this thing again.

First of all you need a goal or you won't know if you've succeeded (or failed). My goal is to essentially have a new python at my command. Another general purpose language that I can use as easily as I think for any sort of programming itch I happen to have. I originally learned python because I was looking for a new language that was different from what I was using at work. In 2000 or so I was mostly a Java and perl programmer. Python seemed interesting and different so I dove in. Relatively soon after that it became my full time work language and I sort of lost the idea of having a second language that I used in my free time.

So here I am again looking for a "fun" language. I've actually done occasional reading on haskell topics/blogs and have gone through a few short tutorials, but it's hardly a language I would say I'm at all comfortable in. In fact, unlike most languages that I have some familiarity in, random haskell code more often than not seems to have some scary new function/datatype/etc that I can't even start to grok from context.

The metaphor I have in mind as I dive in is that just as a professional builder uses tools that would be confusing and dangerous to a amateur builder there are programming tools/languages/concepts that are a level of effectiveness above the blub that I'm used to. It will take time/energy to master the more powerful tools but once you have, you will be working at a more advanced level.

I'm really curious to see if I can get a new language in my tool belt that is as concise (or more so) than python, faster, less prone to bugs, etc. Haskell seems as likely to provide this as any language as I'm aware of.

My plan is to use "Real World Haskell" as my main resource. By the end of the year I'd like to have gotten comfortable enough that I could use it interchangeably with python for random fun projects at home and even better to create a project and/or get involved in an existing project so that I have a reason to keep my skills fresh (since it ain't too likely to become my work language any time soon).

In any case I'll check back in a month or so and let you know how it's going.

Wednesday, November 4, 2009

100 pushups - DONE

OK, it took me about a year and a half. And they weren't pretty. But I finished it.

Sort of anti-climactic somehow after all this time. But kinda cool to have gotten there.

2 questions:
- do I bother maintaining this level? (once a week refresher?)
- what should I work on next? (chin ups probably)

Thursday, October 1, 2009

100 pushups milestone - 80

OK, so I'm 80% of the way there (100 pushups).

Just checked my records and I've been doing this for 1 year and 3 months. That would be funny if it weren't so tragic. How can it be taking so long? Oh well, keep on trucking.

I better get a damn spiffy prize when I finish this.

Monday, July 20, 2009

Git 101 tutorial

http://en.oreilly.com/oscon2009/public/schedule/detail/7953

This was a great tutorial. It was as good of a brain dump as you could hope for in a half day session. A good mix of theory and hands on examples. This got me excited to get back to the office and push to get this adopted as soon as possible. (It's already "in the air". It just needs a nudge to get us converted over to it)

Well done!

Still Looking for the Swan in Squeak's Ugly Duckling

http://en.oreilly.com/oscon2009/public/schedule/detail/8158

So this is not exactly the tutorial I was expecting. But it's also quite possible my expectations were a little skewed.

Unfortunately Avi Bryant wasn't able to make the conference so Randal Schwartz stepped in. And no disrespect to Randal but if I had known this substitution had occurred, I would have picked a different tutorial simply because I had seen his presentation last year and was interested in a different perspective.

Partly I feel like I was expecting too much from this tutorial and part of me feels like I got something different than described.

When I read the description in the link above I don't get the sense of a remedial no-background talk. But like I said Randal took this over at the last minute for Avi so I have no complaints with him.

I think I focused a little too much on the last paragraph of the description whereas I should realize that that is what usually gets covered least at the end (or not at all):

"But we’ll also address the practical concerns that keep people away from Squeak: how to get rid of the pastel colors and bitmapped fonts so that you can stand to look at it; how to get your source code into version control so you can collaborate with others; how to find documentation and examples; how to integrate with the OS and with C libraries; how to manage deployment."

I am relatively comfortable with the ideas of smalltalk and reading it's code, just not completely sold on the language and environment. So what I was mostly looking for was the addressing of "practical concerns that keep people away from Squeak":

  • how to get rid of the pastel colors and bitmapped fonts so that you can stand to look at it;
    • just a mention that this is possible. I would have really liked a detailed course on how to customize the ugly duckling away

  • how to get your source code into version control so you can collaborate with others;
    • there was a pretty good description of version control and options for doing this

  • how to find documentation and examples;
    • this was well done and is a core part of the wonder of smalltalk

  • how to integrate with the OS and with C libraries;
    • I don't think there was any mention of this (unless I really zoned out)

  • how to manage deployment.
    • I don't recall anything like this


But really it was a well done tutorial, just not what I was expecting. But I think
this was just a combination of over ambitious expectations and last minute teacher changes.

Here is the smalltalk course I would love to have:

  • develop a real world useful app while I watch. e.g. take some unix sysadmin tasks and automate them and create a reporting system etc. ie, show me that squeak can kick python's ass at something where python excels
  • show me how to recover when my image crashes or I've accidentally broken things
  • show me how to customize my way from the default image to one of the premade developer images. then explain to me why these aren't already the defaults
  • show me how to convince my bosses that I should do a trial project in smalltalk. :)

Sunday, July 12, 2009

Happy Birthday - My mission to get to 100 pushups is now one year old!

So after a year of the 100 pushup plan, where am I? 75.

Now if you are familiar with the 6 weeks to 100 pushup plan you might detect a slight disconnect between the plan and my success. Just an eentsy bit off...

On the one hand: holy crap I can do 75 pushups. And also: wow, look at the determination and will power.

On the other hand: what is wrong with me? Why can't I finish this sucker? And: why am I wasting my time, focus on this?

So there you go. I'm part super man and part loser. I knew that before I started.

OK. If I haven't gotten to 100 before another year passes I seriously have to reevaluate this whole thing.

(Any tips from the pros out there how to get the last 25?)