About Me

Programming has always been one my favourites and I deeply enjoyed system programming until I came to know about this ERP thing.  Since then my focus in programming has been on finding ways to develop business applications more efficiently.


I blog on http://BahmanM.com.


Latest Site Updates

Have an itch to work on all sorts of different kinds of processors and hardware but don't have the money to buy them all? QEMU does for more modern processors what SIMH does for historical computing. It's a fun package and, unlike SIMH, is actually of broader practical use.
Review: Sublime Text 2
Sublime Text 2 is a hot, capable text editor crippled to the point of uselessness by lousy documentation, an unresponsive developer and a community that reminds me of mid-'80s BMW owners: they shy away from any hint that they bought a lemon.
Comment Bahman Movaqar on 140 Characters of Stupid at a Time
I've seen this mindset in the IT world very frequently now where one's world (ideas, plans, expectations, ...) are shaped by his “awesome” tools instead [...]
140 Characters of Stupid at a Time
I don't use Twitter. For any reason. Here's why.
From the blurb: "The goal of this wiki is to collect information about the family of concatenative languages. We are interested in both theoretical results, and practical programming advice. Information about any concatenative language is welcome here. We want to bring together disparate language communities and build a common knowledge repository that people can consult to learn more about this family of languages."
Curry: a Functional Logic Language
Sure I may be a Mercury fanboi, but there are actually other functional logic languages out there. Curry is one of those. From the blurb: "Curry is a universal programming language aiming to amalgamate the most important declarative programming paradigms, namely functional programming and logic programming. Moreover, it also covers the most important operational principles developed in the area of integrated functional logic languages: 'residuation' and 'narrowing'."
FSL Interceptor Creation
The Fsl package created by our very own Marc Simpson puts a really cool extension wrapper around the core of the great Fossil SCM. Adding new commands and such is easy, but requires both familiarity with a bit of a fringe language (Tcl) and requires knowledge of how the pieces of the Fsl wrapper interact. This tutorial goes through the creation of such an "interceptor" command as an illustration of how to get to there from here.
Website Issue Tracker
Announcing YFL website issue tracker.
Comment Bahman Movaqar on NOSQL Databases
Hmm...I only needed to use the REST (https://github.com/michaelklishin/neocons) and embedded (https://github.com/wagjo/borneo) API.
Comment Bahman Movaqar on The Computer Simulation History Project
Yes, this “simh” thing is a great thing. I remember 4 years ago, I was so excited when I ran the real Unix thing on [...]
The Computer Simulation History Project
Home of the (in)famous SIMH suite of hardware emulators. This is the kind of hardware really amazing things were done with, even though the mobile phone you tossed away ten years ago because it wasn't powerful enough outpowered them. If you want to understand why older programmers scoff at the youngsters who complain about "only" having 4GB of RAM in their machines, this is the place to look.
The Unofficial CP/M Web Site
Wanna see how a lot of people got started down the path toward this profession? Wanna see what it was like back when it was possible for a single person to know absolutely everything (down to the wiring!) about a single system? This web site is a good place to start.
Moving Forth
This is the entry point to a series of articles that gets down and dirty about implementing Forth systems. Wanna know what all the terminology people toss around in the Forth world actually means? Here's a good starting point for learning it.
Richard Jones' Garbage Collection Page
From the page blurb: "the Garbage Collection page is a comprehensive resource for automatic dynamic memory management a.k.a garbage collection."
NOSQL Databases
A clearing house of information on the latest database fad from the '50s! To be fair it does have some good stuff in it. This is how I found out about graph databases, for example.
From the front page blurb: "LiteratePrograms is a unique wiki where every article is simultaneously a document and a piece of code that you can view, download, compile, and run by simply using the "download code" tab at the top of every article."
Rosetta Code
From the front page blurb: "Rosetta Code is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another."
Comment Michael T. Richter on NOSQL Databases
No, it's not even slightly off-topic. I used to be very interested in Neo4j. It took them deciding to use Scala as their query language [...]
Comment Bahman Movaqar on NOSQL Databases
Could be considered OT but I've written serious projects using Neo4j (a graph DB) as the backend and Clojure. You might want to take a [...]
Meta-Predicates in SWI-Prolog
The meta_predicate directive in Prolog can cause confusion when first encountered for two reasons: 1, it is a horrible, horrible hack; 2, documentation for it is badly-written by people who know what they mean but not how to express it. There is the further problem that each dialect does it differently (this being Pro-"what's a standard?"-log). Here's my attempt to make things a bit less confusing for SWI-Prolog (and probably YAP) users.
Stupid Shell Trick
Launching GUI apps from the shell is often a pain. No longer!
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire (1991)
An interesting paper with funny operator names.
Comment Bahman Movaqar on Stupid Shell Trick
I have `alias vi='emacsclient -t'` in `.bashrc` :-D
Comment Michael T. Richter on Stupid Shell Trick
Yes, I can see how running the "emacs" once with a long command line option and then an even *longer* command name ("emacsclient") with a [...]
How to use dingding's features
Small guide on working with dingding.
Syntax Highlighting On This Website
As a website for programmers it is necessary to provide users with some kind of syntax highlighting mechanism.
High vs. Low Level Languages
There's a lot of mistaken impressions about high level languages, both in terms of their attributes and their benefits. Allow me to elucidate.
Comment Bahman Movaqar on Stupid Shell Trick
Again there's no need for such an alias for Emacs. Run `emacs --daemon' and then use `emacsclient -c' to very quickly launch an Emacs window [...]
An under-appreciated scripting language that is actually faintly prophetic.
Comment Bahman Movaqar on Rexx
Good choice. I'd always wondered what is this T-Rex language that I know absolutely nothing about? :-) However, to make the article more “ttmrichter'ish” style, [...]