Showing posts with label erlang. Show all posts
Showing posts with label erlang. Show all posts

December 10, 2010

Something nice about every language I've used

Inspired by this post (and more great answers on the reddit comment thread), here's one nice thing about each of the languages I can remember using in any meaningful capacity:

Java: I learned to program in this. It led to the creation of the JVM, and while Java isn't my favorite language, the JVM is a pretty sexy piece of technology that enabled a number of other languages (Scala and Clojure most notable) to flourish.

C: The closest thing imperative programming has to "sparse beauty," a la Scheme. Shows you really don't need many bells and whistles to do a job, and do it well.

C++: Back when everyone was using C, it's kind of a technical miracle that Bjarne could create a proper superset on top of C with the features it has. Further, it's still blazing fast; without it we wouldn't have all the video games we love today ^_^.

PHP: Incredibly easy to learn, and no-hassle to set up on a server. One of the matches that lit the web on fire.

Racket (and Scheme applies here too): The language that never lets up. The most delicious learning curve I've ever tasted. Like Wagner's music is jokingly said to be "better than it sounds," Racket is more fun and fulfilling than it deserves to be.

Erlang: Industry-proven functional programming with more concurrency love than 1000 suns. Also the top language for gaining hipster-programmer cred. When you drop this name, suddenly everyone looks at you like "that guy" (you can decide if this is what you want or not).

Haskell: A wolf in sheeps's clothing, the most modern, practical, and supported language with features I think we'll see as necessary in the future. Another candidate for learning curve that keeps on giving.*

SML: A really sick module system for programming in the large. While not my favorite for "programming in the small," an understanding of SML's module system makes you pity that it never really took off.

Ruby: One of the most beautifully designed, fully-realized languages I know. Shows you can make a language that is simple, with practical value for Herp Derp programmers without sacrificing power and flexibility for the craftsmen as well.

Objective-C: The real "C with objects." Message passing with named parameters (and the much more sensible #import rather than #include), this is one time where I'm highly in favor of Mr. Jobs' stubbornness.

Prolog: 10-second youtube video. I mean this in a good way.

Max/MSP: Probably the most fully-realized and pleasing graphical programming environment I know, as well as an example of a damn fine DSL.

Javascript: I don't have to worry about compiler errors! No seriously, prototypical objects for the masses.

Flapjax: Functional reactive programming! An excellent example of functional languages and concepts attacking problems from the language level. Very innovative workaround for the horrors of client-side programming of the time.

Actionscript: Adobe makes it! Like Java, but better (Flash Platform > Swing/most Java GUI's).

*= Small qualification on the learning curve lines: virtually any language takes years of work over dozens of programs to "master." But many times mastering a language means compensating for its weaknesses, not discovering new strengths. That's what Haskell and Racket have given me more than most other languages.

September 16, 2010

Living Openly

I just wrote a long blog post talking about why it sucks playing Zerg in Starcraft 2. But friends, there has been too much whining on this blog of late! It's time to bring back two things we've missed for some time: computers and whimsy!

Haters Gonna Hate

So a few things: I'm living the dream, and finally installed Linux on a personal box. It's a small step (this is my laptop, not my main) but Perfect is the Enemy of the Good, and after using Mac, Windows, and Linux at work, it's incredibly obvious which direction I'd like to move in for the future.

Currently I'm running Ubuntu. I wanted to run Debian like we did at Brown CS, but I'm too much of a weenie at the moment. Besides, Ubuntu's easy as a dream to set up, and I've done it for work twice already. Naturally, I'll be using XMonad as my window manager ^_^

I've written twice that I've "picked up" ScrabbleCheat again, but they were lies. This time I've actually picked it up again (see the commit history!) and it's finally going in the right direction. I had a substantial amount in the first tagged release, but that approach (the anagram solver) was ultimately doomed because it didn't take the board into account when generating words for moves. If I ever get productive again, I'll write about this process, this has been the most fun I've had coding in a while.

Part of the fun has been because of Erlang, which has just had another release. There are so many reasons to use Erlang, and this application contains almost none of them (not super parallelizable, no need for hot-swapping patches, binary syntax, or fault-tolerance). That being said, I really miss my functional programming, and refactoring calls to a series of folds and maps just feels nice. I can't imagine how powerful I'd feel if I'd properly learned macros, or had use of Haskell's type system. Those are for the next ones ^_^

Finally, Diaspora open sourced today. It's too early to really tell anything about its future, but I'm thinking of looking at it and seeing what they did. If we're lucky, the community will take well to this I can finally stop being a dumb fuck who trusts Zuckerberg.

(Note that while I don't love all aspects of the product, my family will always be eternally grateful to Facebook for helping us communicate to so many, so easily during the roughest parts of Annalisa's recovery. I also think their approach to engineering, like many of the coders I know there, is brilliant).

Finally, I'm turning in my iPhone in late October and getting me an Android (probably an Evo), since I'll be paying that bill pretty soon and will use the opportunity to go to a more open land, containing the closed platform I work on ^_^.

So that's it, kids! Open source OS, programming an open-source hippie language, slowly migrating out of Facebook while decking it out with a new, more open phone. All that will be left will be a bed that's also a Reprap.

Since Day 1

I'll try to post more; I still sleep next to too much cardboard and styrofoam, and will probably be comfortably moved in and adjusted after Christmas ^_-.

July 23, 2010

GADDAG and Capitalism

I decided to revisit ScrabbleCheat (took a break for administrivia), and wrote my first Wikipedia article, on the data structure I'm refitting it with, to celebrate. It's rare that you can write something on Wikipedia that isn't there, so I had to pounce.

Hope I can keep editing it with diagrams and the like, as it's a little lame at the moment. Against my better other judgment, I'm still writing it in Erlang ^_^

---

Also, while I do believe in capitalism and it's ability to generate wealth, here are a few lame things from the last few days:


Forgive the poor sound quality, but this Louis CK bit comes to mind:

June 28, 2010

Coding socially

My gravatar for ALL these sites I decided to finally get a GitHub account, since I've downloaded countless great software from it, and think it's about time I joined/gave back. So check out my profile, feel free to be my friend (or follow my project[s], whatever it is...), and check out my first "release" of a side project, a program to help you cheat in Scrabble!

Many other Scrabble cheaters have been written, but mine is in a silly functional language! Also, I have plans to make it more than just an anagram/word generator, even though that's all this release contains. You'll need an Erlang VM to run it.

I'll also mention I have a BitBucket account, but no public repositories. My video games group used Mercurial, so now that two of us have graduated we moved our project to BitBucket. I put Rat Race and FlipTile on there as private repos. If you'd like to friend, follow, or want access to those codebases, let me know ^_^

Finally, though this is on the sidebar, I'm also on Stack Overflow.

(the pic is my Gravatar, used in all these sites; a picture taken when I was in Guatemala last year, with much longer hair and a budding beard. I think it's one of the few pictures that's not unflattering with that style. I look a bit different now.)