Opinion -- Berry Web Blog -- page 1

A hope for quality software

Posted: 2015-09-15. Modified: 2016-01-06. Tags: Opinion, programming, philosophy.

I believe that if something is ever good, in a complete sense, then it will always be good. Human nature does not change, and our core needs change very little. If a meal was good 2000 years ago in Jesus' time, I think we would still find it good today.

One thing that bother s me about software development is that the field is often incredibly fad-driven. People write code, and two or three years later people think they need to rewrite everything to interface with whatever the new hotness is. Look at the state of javascript libraries/frameworks for a prime example of this code churn.

Is it possible to write good code? I think that if you target the right abstractions, then it most definitely is. And one example of this is the long-term success of the Netlib libraries, developed continuously for over 40 years as high quality linear algebra tools.

"Math has a long shelf life".


Software Programmers are like Doctors…

Posted: 2015-09-15. Modified: 2015-12-21. Tags: Opinion, programming.

They must diagnose and treat complex problems every day. But the difference is:

for doctors, the platform stays the same.

in software, THE PLATFORM KEEPS ON CHANGING!


Is python pseudocode?

Posted: 2015-09-15. Modified: 2015-12-21. Tags: LISP, Opinion, programming.

People often state that python is the most similar programming language to pseudocode (what you write if you are trying to convey a piece of software to other humans rather than a computer). I've translated numerous pseudocode algorithms from books into various languages, and I agree that python often makes this process natural.

However I think an argument can also be made for LISP as the most "pseudo-code" like language. Perhaps while Python has the greatest surface similarity to pseudocode, LISP has the greatest actual similarity to pseudocode.

Why do I claim that LISP is similar to pseudocode? It's appearance is often rather different, after all.

I make this claim because of the intrinsic linguistic flexibility of a language supporting structural macros. The power of pseudocode is not just that it doesn't conform to a particular bracketing convention or function naming convention – the power of pseudocode is that you can introduce arbitrary code constructs, and explain them to your readers later on.

For example, consider the "with-redeclarations" construct, which rebinds all the functions executing within it. Lisp is MUCH closer to the ideal of the programmer being able to create arbitrary constructs than python is, and there are many instances of where you could imagine a way of thinking about a problem in pseudocode and translate the idea approximately into lisp, but have to rework it completely for python.

Therefore I conclude that while python does often look very similar to pseudocode written in a book, lisp is in a way also very similar to pseudocode because you can dream up very flexible code constructs just as you would if you were explaining a problem to someone with no fixed programming language.


A Minimal Set of Computer Libraries

Posted: 2015-09-15. Modified: 2015-12-21. Tags: programming, Opinion.

I am aware that modern business programming is essentially stringing together chains of third-party libraries which you only vaguely understand till you get the result you think you want. Rather than understand everything that goes on at every step of the process, you instead choose to understand the bare minimum to get to the next step.

But hobby programming doesn't have to be like this. Wouldn't it be fun to understand a set of tools at a level that you almost never have to crawl the web looking for quick-help tips? Wouldn't it be nice to be able to repurpose a set of libraries to accomplish everything you want to do as a hobby programmer?

Well, I think this may be true, for my needs at least. I am working on learning a set of libraries which I think can cover everything I need to do as a hobbyist, will report back with any insights I may gain.

The set of tools I am starting with is:

  • C.
  • Lisp. (Common and Emacs)
    • various common lisp libraries. todo add
  • SDL – graphics, audio.
  • OpenGL – graphics
  • GSL – GNU Scientific library.
  • LAPACK/BLAS – linear algebra
  • POSIX – file-handling and system level stuff.

With this set of tools, I can system-related stuff, math-related stuff, and multimedia-related stuff. That's a start at least.


No One Knows How to Do Anything Anymore

Posted: 2015-09-15. Modified: 2016-01-06. Tags: Opinion, programming, philosophy.

Do you think you know how to use piece of software X? No you don't. You've just learned enough of the facade of X that you can often get by without having to look for directions.

Much of modern software development (and life in general, for that matter), is crawling through the vast trove of information available on the internet to find a pre-made solution to a problem at hand. My observation, at least, is that programmers rarely take (or have) time to develop a thorough understanding of a problem or tool. Rather, we rush through assignments and tickets, pasting together components until it seems like we have what we need.

Forget algorithms and datastructures, the most important skill for a modern programmer to have is – google skills.


The three Es of Text-editing

Posted: 2015-09-15. Modified: 2016-12-21. Tags: LISP, Opinion.

1 Efficiency

You want to be able to perform editing tasks quickly and use an optimized workflow.

2 Ergonomics

You want to minimize strain on your wrists and hands, primarily by conserving movement.

3 Extensibility

Since you are a programmer, you want to be able to program and customize your environment to meet needs as they arise. Add and remove features to optimize your workflow.

Each of these features is in some way linked to the other two, but at the same time each of these features is an independent goal to achieve.

[CB 8/3/2015] I plan to post some articles about how I think these goals can be achieved quite well with Emacs+Evil soon. Note that emacs additionally supports variable-width text, which appears to increase reading efficiency by ~15%.

Atom Feeds:
Tags: