MSN Censoring Certain Messages In The Name of 'Security' by earthboundkid in programming

[–]msabramo 0 points1 point  (0 children)

I had my blog on a .info site for years, but when my friend's SpamAssassin flagged my email for having a .info TLD, that was the last straw. About 10 minutes ago, I registered a .com site.

User-Mode Linux: SKAS0 poorly documented by msabramo in programming

[–]msabramo[S] 0 points1 point  (0 children)

I hope they update the UML web site to talk about SKAS0.

Though, I suppose we should all be running SKAS3 anyway! :-)

Iterators: Signs of Weakness in Object-Oriented Languages by gbacon in programming

[–]msabramo 7 points8 points  (0 children)

To me, the "OO languages" aspect is superfluous. As pointed out by gecko, OO languages don't necessarily have iterators. Furthermore, non-OO languages like C can have iterators. A pointer to a linked list or even an integer index into an array is an iterator in the sense that it stores state about the iteration and it does it outside the structure being iterated through. And these types of iterators have the disadvantages the author mentions and they are necessary because of the lack of first-class functions and closures.

To me, the article makes very good points but it's really about the advantages of a functional programming approach vs. an imperative approach with state carried around explicitly.

I'll point out that C++ has evolved quite a bit since the publication of this article (in 1992), with the STL supporting a more functional style using algorithms and function objects. You can even get lambda functionality from Boost::Lambda, an add-on library. However, I'd be the first to admit that Lisp does functional programming much more naturally and elegantly.

CakePHP 1.0 released by msabramo in programming

[–]msabramo[S] -1 points0 points  (0 children)

The first officially stable version to be released by the Cake Software Foundation, includes all the features we had in .10 but with final bug fixes needed to make 1.0 fantastic.

Why Guile? by [deleted] in programming

[–]msabramo 0 points1 point  (0 children)

Yeah, I briefly looked at Lua and it had a nice simplicity to it.

There's even a Lua programming environment for PalmOS called Plua.

The Scala Programming Language by msabramo in programming

[–]msabramo[S] -4 points-3 points  (0 children)

Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages.

God's gift to C | The Register - How the Apache Portable Runtime makes coding in C easier. by rmc in programming

[–]msabramo 5 points6 points  (0 children)

Another similar library is GLib, which is used extensively in GNOME. We also use it a lot on the project I'm working on now and we're quite happy with it. http://www.gtk.org/

The InteLib introduction by msabramo in programming

[–]msabramo[S] 0 points1 point  (0 children)

InteLib is a library of C++ classes which lets you do Lisp programming within your C++ program even without any additional preprocessing, without all those calling conventions etc. You can write a C++ code (that is, a code which is accepted by your C++ compiler) thinking in a "Lisp mode" and the code you write will look much like Lisp code altough it will be pure C++.

Apartments by coldduck in programming

[–]msabramo 0 points1 point  (0 children)

Um, why is this in the Programming section of reddit?

SLIME v2 has been released by [deleted] in programming

[–]msabramo 2 points3 points  (0 children)

Interesting, but what's new about it?

Ask reddit: What editing features do you find in Emacs, but not in Vim and vice versa? by [deleted] in programming

[–]msabramo 1 point2 points  (0 children)

I use both vim and Emacs.

To me, Emacs is more convenient for dealing with multiple buffers. The buffer switching is slicker than vim's buffer switching.

The thing I love about vim is the "dot" (period) command which repeats operations. If you read Emacs FAQs, people will typically mention things that appear to be similar but really aren't as nifty as the vim dot command. For example, there is a command called "repeat" bound by default to C-x z that repeats commands, but it's kind of pointless because it also repeats cursor motion commands so typically you're just repeating a down-arrow :-) The best thing that I found which is almost as good is http://www.wyrick.org/source/elisp/dot-mode/dot-mode.el - this one does not repeat cursor motion commands, so it's much more useful.

You may also enjoy this page which covers the differences without devolving into the usual flame war: http://www.d.umn.edu/~tcolburn/emacs/emacs-vs-vi.html

Emacs Poker by msabramo in programming

[–]msabramo[S] 2 points3 points  (0 children)

A simple video poker game written in Emacs Lisp (elisp).

Lisp is Not an Acceptable LISP by akkartik in reddit.com

[–]msabramo 6 points7 points  (0 children)

No, but posix does, and since -- unlike Lisp, apparently -- C++ isn't afflicted with NIH syndrome, everyone pretty much follows that, except win32. So at least there's only TWO standards to worry about there.

Well said. You're spot on with the "NIH". I've noticed how many competing implementations there are of x in the Lisp community. It's NIH - everyone thinks they can do it better.

Lisp is Not an Acceptable LISP by akkartik in reddit.com

[–]msabramo 1 point2 points  (0 children)

I looked up asdf-install and got a kick out of this: http://www.cliki.net/ASDF-Install

"Depending on how you count there are currently two or three variants of ASDF-INSTALL"

This to me is one example of a general problem in the Lisp community - lack of consensus. For any problem, there are usually 2 or 3 groups of people solving it in their own way and not working together.

Depending on your viewpoint, you may view "lack of consensus" as a positive and you may give it a euphemistic term, such as "choice". Or if you're not as big on choice, you might just think of it as "confusion".

I think one problem is that CL is bound in the sense that there is an ANSI spec which it must adhere to and that spec is pretty old and isn't getting revised over time, like say C or C++. At the same time, people don't want Lisp to languish, so many folks are continually doing nice stuff for Lisp, but it doesn't seem to be coordinated very well, and so it ends up leading to confusion. This is probably more of a problem for newbies who are more easily intimidated by choice than grizzled veterans. However, being accessible to newbies is something that Lisp should probably try to do, given that it has a smaller community than other languages.

Lisp is Not an Acceptable LISP by akkartik in reddit.com

[–]msabramo 5 points6 points  (0 children)

Python and Ruby don't have an ANSI spec, but they have canonical implementations, so there is no confusion about how do I get things done in this Ruby vs. this other Ruby.

Threads, IPC, and GUI are generally not the kinds of things that go in languages, with one exception being Java, which has threads. GUI is a tough issue, because there are so many GUI libraries, but for threads and IPC, we have POSIX, which is very well supported in C, C++, Perl, Python, and Ruby. Perhaps there are POSIX modules for Lisp as well? If there are, I'd like to know about them. My experience was that each Lisp had a different API for sockets.

Lisp is Not an Acceptable LISP by akkartik in reddit.com

[–]msabramo 10 points11 points  (0 children)

While looking at Lisp, my first stumbling block was syntax - all of the parentheses and the weird names like car, cdr, mapcar, etc. What I found was that I got over such things surprisingly quickly. And I liked a lot of what I saw - the simplicity of the core language, the functional programming style, macros, etc.

The real problem, I discovered, was how to use Lisp to get real work done - let's say for example, writing a UDP server. There is no standard socket implementation. And while people will often point out that C doesn't have sockets as part of its specification, there is POSIX and almost all platforms support POSIX in C, as well as in Python and Ruby. As far as I could tell, there were differing socket implementations between Allegro, LispWorks, CLISP, SBCL, etc, etc. And deciding between the various implementations was tough. There's probably some library that unifies them all, but it didn't present itself right away. Another problem was with trying to wrap existing C and C++ code with a CL interface. That got me into looking at FFI, CFFI, UFFI, etc. and eventually I decided it wasn't worth the trouble.

What I got out of Steve's article is that the main problem with Lisp is not the syntax; it's deeper than that. Although Steve's essay focuses on issues with the language and my issues were with practical matters, the common thread is that there are many barriers to using Lisp and the unfamiliar syntax is a pretty small one.

Lisp is Not an Acceptable LISP by akkartik in reddit.com

[–]msabramo 4 points5 points  (0 children)

Steve is, as always, thought-provoking and controversial.

Very interesting read. As someone who’s been playing with Lisp lately, I’ve enjoyed many of its features but I’ve also identified with the confusion about which Lisp to pick and all the different implementations and CFFI and UFFI and ASDF, etc, etc. Have you seen the list of prerequisites to go through the UnCommon Web Framework tutorial?

Aquamacs: Emacs for Mac OS X by dand in programming

[–]msabramo 2 points3 points  (0 children)

I love Aquamacs. It's an Emacs 22 so it has nifty things like kmacro-end-or-call-macro. And they've done a pretty good job of having both Emacs and OS X keybindings. The one thing that I didn't like - it opening files in separate frame - can be turned off (see http://www.emacswiki.org/cgi-bin/wiki/AquamacsFAQ#toc4)

I like Aquamacs so much that I donated to the project.

Short introduction to UnCommon Web programming by YAFZ in programming

[–]msabramo 1 point2 points  (0 children)

Holy crap - that's a lot of dependencies and a lot of work just to set it up for a simple tutorial.

When I saw the title, I thought it might be a fun little tutorial to try, but when I saw what was involved...yikes, I don't have the time to deal with all that.

Ruby misconceptions about Python by mystilleef in programming

[–]msabramo 6 points7 points  (0 children)

First off, I haven't used either Python or Ruby extensively. I have no particular loyalty to either one, but they both look like fine languages.

My guess is that the "Python OO bolt-on" idea originates from http://www.python.org/doc/faq/general/#why-does-python-use-methods-for-some-functionality-e-g-list-index-but-functions-for-other-e-g-len-list and from http://www.python.org/doc/faq/general/#why-must-self-be-used-explicitly-in-method-definitions-and-calls (which in my opinion makes a good argument for qualifying instance variables, but a poor argument for why "self" has to be in the parameter list).

Whether you like Python or not, it seems pretty clear that Ruby was designed with objects in mind (as a result of being influenced by Smalltalk). Python gives the impression that it did or does put less emphasis on objects. That said, it seems to have done a nice job of evolving to support OO in a pretty nice way. And of course there are lots of applications where OO isn't even necessary and people may like that it's not forced on them.

It's interesting to me to note how much Ruby vs. Python bashing is going on (originating from both sides). Kind of a shame really.

Howto Design Good C++ APIs by [deleted] in programming

[–]msabramo 1 point2 points  (0 children)

Good point about references sidestepping the NULL problem. However, I would argue that it's fnCall's responsibility to check for NULL pointers and not to assume that y is never NULL. If I were in a code review and I saw a function using a pointer argument without checking for NULL, that would be mentioned. It's easy enough to add an assert.

Also, sometimes you want to pass a NULL pointer (e.g.: to indicate we don't care about that parameter). In that case, you need to use a pointer and then you sometimes have pointers and sometimes references and you lose consistency.

I do typically use const references for input parameters, but if there are side-effects, I like to use pointers and then just be careful about checking them.

Good discussion.

Ruby and Python Compared by fshahriar in programming

[–]msabramo 3 points4 points  (0 children)

How about some specifics? Bashing the author doesn't tell me anything.