My initial experiences with Common Lisp

So I have been getting my hands dirty with FUSE and it’s C API lately. Since I have only been using Python for almost all of my major projects, the experience has given me a newfound appreciation of a type system and how much it can help programmers understand large, complex code bases and APIs, especially ones that have little to no documentations.

But I still love all the benefits that dynamic languages bring, primarily the ease and speed of which they enable one to get a program up and running, so I spent my evening searching for a dynamic language with a type system. That’s when I accidentally ran into this little gem of a comment on Hacker News, which mentioned that Common Lisp also has a type system. A gradual/optional typing, to be precise, among other intriguing features.

So I have decided to take the plunge and learn Common Lisp. Specifically, from the Practical Common Lisp book, which many people recommend as one of the best introduction text on the language.

I have gone over the book once, and, well, I’ve to say that they are correct, as the book really is great. It has a very clear and concise prose and does a great job of explaining even the more complex and esoteric parts of the language (this is the first book that made me grok generic functions and the power of Lisp Macros).

All in all, the book is great, and the experience with Common Lisp has been a great one. The language really is as powerful as many Lispers said. Hell, how many language let you change the grammar of the language itself! (Using the ridiculously power Common Lisp Macro, of course.) I have heard that Lisp has no syntax, but to actually understand what that means really blows my mind.

Also, the Common Lisp type system exceed my expectation. Not only does it provide type checking, it can also act as a way to optimize your code (à la Cython) if you use the compiler that supports such feature (namely SBCL). And not to mention the other features of the language. The CLOS, the Meta Object Protocol (MOP), etc. Heck, it seems that the only reasons Common Lisp isn’t more popular are because of its unique syntax, the lack of libraries, especially compare to newer languages like Python or Ruby, and the lack of de facto standard compiler (Common Lisp has many different compilers, each with its own unique set of features that may or may not be compatible with one another).

Anyhow, I look forward to use Common Lisp in my future projects and getting to know the language ins-and-outs better.


Interesting Discussions on Lisp

Who would have thought that an online book about typography would contains an interesting article about Lisp? The Hacker News thread of the article is also a fascinating read, contains many illuminating discussions about Lisp and Racket.


I have also found another interesting thread about Lisp on Hacker News, which is about this blog post which talks about the current state of Common Lisp.

Publishing venues for works in the field of multi-agent systems

Because publish or perish is still a fact of life in 2014 for all aspiring researchers, here are some publishing venues for papers in the field of multi-agent systems.


For conferences, there is the International Conference on Autonomous Agents and Multiagent Systems (AAMAS), sponsored by the International Foundation for Autonomous Agents and Multiagent Systems (IFAAMAS), and for journals there is the Autonomous Agents and Multi-Agent Systems, which is an ISI journal.


The Multi-agent Systems and Optimization Research Group in the Research Institute IRTES, at the Université de Technologie de Belfort-Montbéliard also have an excellence page that lists all the journals and conferences that accept works in the field of multi-agent systems.


Poppler font rendering bug and a workaround

So lately I’ve been plagued with a bug where fi and fl ligatures are not displayed in Okular. Needless to say, this makes reading textbooks, especially mathematics textbooks with all those words like “define” and “definition”, supremely annoying.

After finally having some free time, I started googling around and finally found the cause. It’s a bug with poppler.

Fortunately, there is a workaround that solves the problem. Hopefully this bug will get a properly fix soon, but for now this will do.

Markov Chains Learning Resources

Since it looks like that there is a very high chance that I’ll have to use Markov Chains in my research, I’ve been searching and reading up on the subject.

The following are the links & articles on Markov Chains that I’ve found useful.

  • Markov Chains, a visual explanation is a great introduction to Markov Chains. Like its name implies, the blog post contained a lot of great interactive graphs that offer immense help in understanding what Markov Chains are and how they work. Also, the Hacker News and Reddit threads on the post also contain a lot of interesting discussions, my favorite of which is the following short and concise explanation of what is a Markov Chain: “Markov chain = probabilistic (finite) state machine”.
  • Analysis of Chutes and Ladders and Candyland are a great pair of articles that show how to use Markov Chains to analyze complex games of chance.
  • The Model Thinking course on Coursera has a nice set of video lectures on the subject.
  • This Stack Overflow thread describes how Markov Chains and (finite) state machines are related (in short, Markov Chains can be represented by (finite) state machines).