I switched from XP to Ubuntu today, and one thing I missed was a
password manager. I thought, for the hell of it, that I'd try to write
my own one in Lisp; even though I'm a Lisp n00b (although I have been
through a few "iterations" of Lisp before).
Well, it's probably a bit much to say that I've got a fully grown
application in a day; but I'm quite impressed with the progress I've
made. It's even got a little interactive menu system; although it
doesn't yet actually encrypt the data.
I don't know if it's how the big-boys do it, but I'm finding it helpful
to have a file which basically acts as a code scratchpad, and make
functions live using emac's C-x C-e. Also, I find it better to "keep it
simple", and not worry about macros and cool tricks. The interactive
environment helps to start small, and I can incrementally build it up.
Not sure what the structured programmers would make of that, though.
Dunno, I think Lisp might be growing on me after all.
Mark Carter wrote:
> I switched from XP to Ubuntu today, and one thing I missed was a
> password manager. I thought, for the hell of it, that I'd try to write
> my own one in Lisp; even though I'm a Lisp n00b (although I have been
> through a few "iterations" of Lisp before).
>
> Well, it's probably a bit much to say that I've got a fully grown
> application in a day; but I'm quite impressed with the progress I've
> made. It's even got a little interactive menu system; although it
> doesn't yet actually encrypt the data.
Yes, very important: You best learn Lisp by doing it, not by studying
it. Many things only make sense as soon as you get to a situation where
they actually click.
> I don't know if it's how the big-boys do it, but I'm finding it helpful
> to have a file which basically acts as a code scratchpad, and make
> functions live using emac's C-x C-e.
Yep.
> Also, I find it better to "keep it
> simple", and not worry about macros and cool tricks. The interactive
> environment helps to start small, and I can incrementally build it up.
Yes, it's indeed also a good idea to start simple. The stuff for
organizing larger chunks of code can be used as soon as your code
actually becomes large. Only then you know what overall organization
principle best makes sense for the case at hand. (If you recognize a
coding pattern, use macros. If you recognize a data abstraction, use
classes. If you recognize polymorphic behavior, use generic functions.
And so on...)
That's the essence of bottom-up programming, never use something when it
is hard to judge whether you are going to really need it in the end.
> Not sure what the structured programmers would make of that, though.
Not much, unless they try it. ;)
> Dunno, I think Lisp might be growing on me after all.
Pascal
--
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
Pascal Costanza wrote:
> That's the essence of bottom-up programming, never use something when it
> is hard to judge whether you are going to really need it in the end.
No doubt I'm preaching to the converted, but I find that this kind of
approach lets me work with cloudy ideas, rather than me having to know
in advance exactly how it should be done. It also allows me to get the
most important, albeit minimal, functionality earlier. And lacking a GUI
seems to help; I'm concentrating more on what I want my software to do
rather than how I want it to look.
On Mar 4, 12:48 am, Mark Carter <····@privacy.net> wrote:
> Pascal Costanza wrote:
> > That's the essence of bottom-up programming, never use something when it
> > is hard to judge whether you are going to really need it in the end.
>
> No doubt I'm preaching to the converted, but I find that this kind of
> approach lets me work with cloudy ideas, rather than me having to know
> in advance exactly how it should be done. It also allows me to get the
> most important, albeit minimal, functionality earlier. And lacking a GUI
> seems to help; I'm concentrating more on what I want my software to do
> rather than how I want it to look.
For some reason, this reminds me of an anecdote I heard once:
"Here's an anecdote I heard once about Minsky. He was showing a
student how to use ITS to write a program. ITS was an unusual
operating system in that the `shell' was the DDT debugger. You ran
programs by loading them into memory and jumping to the entry
point. But you can also just start writing assembly code directly
into memory from the DDT prompt. Minsky started with the null
program. Obviously, it needs an entry point, so he defined a label
for that. He then told the debugger to jump to that label. This
immediately raised an error of there being no code at the jump
target. So he wrote a few lines of code and restarted the jump
instruction. This time it succeeded and the first few instructions
were executed. When the debugger again halted, he looked at the
register contents and wrote a few more lines. Again proceeding
from where he left off he watched the program run the few more
instructions. He developed the entire program by `debugging' the
null program."
<http://groups.google.com/group/comp.lang.lisp/msg/6d0abab38a07a15c>
Tayssir
On 4932 September 1993, Tayssir John Gabbour wrote:
> student how to use ITS to write a program. ITS was an unusual
> operating system in that the `shell' was the DDT debugger. [...]
> He developed the entire program by `debugging' the
> null program."
This sounds as if an ITS was the perfect environment for test-driven
development.
Holger
--
--- http://hillview.bugwriter.net/ ---
"Emacs is *powerful* in a very limited sense of the word, sort of like
driving a car by separately steering each wheel. With a car like that
you could park in places no one else could - after you became
skillful. In the meantime, you're a disaster."
-- Ethan Herdrick in comp.lang.lisp
On Mar 3, 3:07 pm, Mark Carter <····@privacy.net> wrote:
> I don't know if it's how the big-boys do it, but I'm finding it helpful
> to have a file which basically acts as a code scratchpad, and make
> functions live using emac's C-x C-e.
That's one of the big reasons why Lisp is nice. Also, if you want to
have a code scratchpad that isn't anchored to a file (for whatever
reason) the M-x slime-scratch command is nice.