Berry Web Blog -- page 2

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%.

The Scientist's and Engineer's Guide to Digital Signal Processing

Posted: 2015-09-15. Modified: 2015-12-21. Tags: math.

Author: Steven W. Smith

I found this to be an excellent book which makes dsp concepts and terminology accessible to self-learners. The author intersperses examples aimed at giving an intuitive understanding of the subject matter throughout the book, and backs up these examples with clear explanations of the concepts themselves. HIGHLY RECOMMENDED.

Proper Confidence: Faith, Doubt and Certainty in Christian Discipleship

Posted: 2015-09-15. Modified: 2015-12-21. Tags: philosophy, Christianity.

Author: Lesslie Newbign

Interesting Christian theology book which attempts to do an end-run around apologetics, claiming that the entire field is catering to to debate in a specific arbitrary world-view. It claims that the Christian/Jewish history is a basis for an alternate way of thinking about the world distinct from the philosophical ideas proposed by the greeks and Romans which we still rely on today. I also felt like this book was somewhat of a "CliffsNotes" guide to various philosophical positions from a Christian perspective. Highly recommended to Christians or Seekers who want to have their mental horizons broadened a bit.


Posted: 2015-09-15. Modified: 2017-08-20. Tags: programming, math, music, hobby.

1 Music

2 Programming

2.1 General

  • Andrew Gibiansky's personal blog A really interesting resource. Gibiansky has a variety of great tutorial-style articles, including discussions of Convolutional Neural Nets and Haskell.
  • Scripting: John Ousterhout In this well-known article John Ousterhout provides clean analysis of some of the various types of programming languages in existence, identifying strengths and weaknesses of different languages. He provides a survey of some research on the verbosity of software implementation in various languages and paradigms – in particular he finds that one line of a scripting language is often equivalent to between 5-10 languages of a systems language, and that OOP provides a ~20-30% LOC improvement over traditional procedural programming. He identifies some reasons why OOP code can sometimes be hard to reuse, and also identifies why scripting languages provide a great ability to reuse the code of others.
  • D.J. Bernstein's Website DJB is a cryptography expert who has written a number of excellent pieces of software, including qmail and daemontools. He has written quite a bit on computer security and internet standards.

2.2 Common Lisp

Above is a link to a pdf containing the final draft of the ANSI Common Lisp standard. I believe it can be treated as an authoritative resource on Common Lisp for the general user, and is a good alternative to the Common Lisp Hyperspec.

Please see this article for an explanation of how I obtained this pdf, licensing information (free to distribute, etc…, per the creators of the draft), and background information on why I created this pdf.

  • SBCL is my favorite Common Lisp implementation, and is also my favorite programming environment for my hobbyist programming.

2.3 Python

I like python a lot, and find it a very productive environment for interactive computing and experiments. Python's practical power is in large part due to its excellent ecosystem of libraries and tools. Below are some of the ones I have found useful to learn.

  • Scipy+Ecosystem SciPy and its related tools (Matplotlib, NumPy, Pandas, IPython,Scikit-Learn,…) really do form an amazing toolset for data analysis and mathematical problems. This is definitely my preferred toolset for these problems currently – I have tried some alternatives but I prefer the python libraries and toolset.

2.4 Other

  • Project Euler A fun and challenging math+programming challenge.
  • Excel Unusual Some pretty outlandish examples of what can be accomplished in Excel.
  • Maxima Maxima is a lisp-based CAS, with good documentation, and which also has an Android port. I like this software.

3 General Computer Usage

Below are links to some of the software packages which I like and use.

3.1 email client

  • Sylpheed is my favorite email client. It is extremely easy to set up with IMAP, and provides all the features I need and expect to use email. It is easy to build from source and has light resource requirements. See the FAQ for more information.

3.2 finances

  • I manage our finances in gnucash using ofxclient to automate download of transaction data.

    Actually currently I use a forked version of gnucash with a feature I have added, but I plan to try to upstream my feature eventually (upstream Gnucash is going through a good bit of code churn currently and I haven't had time to figure out the build for the latest version yet).

    These two tools make a reasonably good pair as long as your financial institutions support direct download of OFX files. I find that GnuCash is good for general accounting purposes, but is not so great for tracking investments over time however. I think there is some room for improvement in this area in the future.

4 Maths

  • No Layman Left Behind Intuitive and simple explanations of various concepts in mathematics and CS.
  • UAH Virtual Prob/Stat Laboratory a well-designed and written website covering a range of topics in probability and statistics. Includes good explanations of how to derive statistics formulas and practices, also includes interactive "apps" which allow you to experiment hands-on with the concepts being taught.
  • DSP Guide A great introduction to DSP for people like myself who are not specialists in the field. I have the hardback edition of the book, but I respect the author for making his work freely available on the internet. Before reading this book, other DSP books I have were fairly incomprehensible to me. After reading this book, I can read DSP books without much trouble. Highly recommended!.

5 Hobbyist

  • Sliderule Software If sliderules and calculating devices interest you at all, you may find the software on this site to be cool. The "Curta" mechanical calculator is particularly cool…

6 Miscellaneous

  • Project Gutenberg Access a volume of high-quality, public domain content here. It's a pity that the United States keeps extending copyright protection well beyond any reasonable bounds at the behest of media corporations. See this image for a depiction of how US copyright law has changed over the years.
Atom Feeds: