Navigation Menu

Skip to content
View EricGebhart's full-sized avatar
Block or Report

Block or report EricGebhart

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
EricGebhart/README.md

Eric Gebhart / Homepage / Tango Home page / GitHub / Exercism / Short Edition

I´ve worked in many domains over the decades. I´ve designed and built many systems, most of which are proprietary. My strongest languages are C, python, clojure, elisp. I have done a lot of object oriented work in C derived languages and python. My favorite is clojure and functional programming which I am likely to do in any language. If you really want to know who I am, the best place to start is my website which is also my resumé should you decide to print it.

I´ve been an Arch linux, Xmonad user/programmer for many years and I´ve written a lot of Emacs lisp.

Natural Languages

I am very interested in learning natural languages. I developed my own pedagogy in order to learn french, and I am now working to refine and automate that process in order to learn others. I´ve done some plugins for Anki in the past. I also write, so my emacs is setup with a variety of tools to enable that, input methods, language-tool, dictionaries, synonyms, etc. My QMK keyboard firmware also supports multiple languages.

My old book - ODS Markup: Tagsets by Example.

If you are a user of SAS ODS and Tagsets, you may be interested in the book I wrote many years ago on my Tagset language. It was slated to be published by SAS Press but never was. So I give it here for free. Installing LateX and compiling it to pdf is on my todo list.

Code tests

You might notice I have a few code tests, some of these have come to me in interview processes.

My current solution to code tests is to refuse code tests completely, or charge for my time in doing them. It is best to just refuse.

I have interviewed many developer candidates for many programming languages in my career. I am not a fan of code tests as part of an interview process, I feel they are too narrow in mindset, are generally poorly written and they come fully loaded with unexpressed expectations which bias the results in a negative way.

I generally code using a combination of TDD (Test Driven Development) and RDD (REPL Driven Development) in the languages that support that.


Some projects that might be insightful here.

Note: My activity in 2021 was quite low because I had very poor vision for most of the year from cataracts which have now been corrected.

Of the work I´ve done, here are my favorite projects, which may show some of my skills. My Arch linux is setup stable and only requires maintenance as packages come and go. It is interesting because it uses a combination of Make, Arch Packages, github and the Arch AUR via Yay to do it´s job.

Every so often I go through an update of my system, Arch, emacs and xmonad setups to drop old ways and adopt new ones.

My current favorite projects over all others are SPR, Plysp, Word-Search, Bike-Gear-Calculator, and QMK_firmware/MyQMK. My QMK, Xmonad and Emacs setups are always getting tweaks. I have not been doing 3D work lately, but when I do, I use scad-clj.

My dfs-clj/DFS datastore library does make it very easy to create immutable, partitioned/sliced no sql databases with hadoop, which can be quite fun to play with. Ironically I feel that Cascalog integrates with Clojure much more nicely than Datomic´s datalog which I find verbose and ugly. The pail-manager needs a redesign, but dfs-clj has worked admirably with a variety of big data sources over extended periods.


  • Arch linux packages - This uses Make to create nice repeatable installation of packages.
  • Arch linux install My Arch linux installation script.
  • SPR - Simple Process Repl - A very cool stackless, auto-binding, self-documenting language at this point. SPR Wiki
  • Plysp A simple lisp after clojure. [~90% complete] - SPR has been too fun.
  • My Xmonad window manager. A fairly extensive custom configuration/executable.
  • My Emacs Setup - It´s home grown since 1995, so this shows my way of organizing emacs.
  • scad-clj Coding Open SCAD with clojure, I contributed significantly in it´s beginnings.
  • clojure cli extension A library to make the creation of command line interfaces in clojure easier and more robust.
  • datetime data A Clojure datetime library for normalizing dates.
  • file access A Clojure file-access library to which creates a consistent API for various types of files.
  • dfs-clj - This is the core layer above hadoop to manage pails, data partitioning, and tapping into data with Cascalog. After _Nathan Marz_´s Lambda Architecture.
  • Pail-Schema-Example - This is an example project that shows how to use pails and schema with hadoop and cascalog. This is using dfs-clj before dfs-clj came about. See my post Here. And another post here.
  • Word search - Something I wrote from my own motivations. A meta data collector for words. I have plans for it.
  • bike gear calculator - I wanted a nice one, and I wanted to learn clojure/spec.
  • flickr-fetcher - A code test, turned into a design test. It won a job for me and solved their troubles.
  • ODS Markup: Tagsets by Example - A book I wrote about ODS Markup, never published, for forgotten reasons.
  • SAS-Papers - My papers which will show my writing and give some insight into SAS ODS for which I was a significant contributor.

Programming, tools, utilities

  • MyQMK A sparse tree of my QMK keyboard user space and the keyboards I have keymaps for.
  • Emacs My old school, from scratch emacs setup.
  • Xmonad My Xmonad window manager.
  • Arch linux install My Arch linux installation script.
  • Arch linux packages My Arch linux Meta packages, as well as a fair bit of code.
  • Onboard keyboards Dvorak and Qwerty Ortho-linear keyboards for the Onboard on screen keyboard.
  • view-attachment Mutt and OS X integration script, written many years ago.
  • xmonad-log-applet Getting Xmonad to talk over DBus to a toolbar, an orphaned project which I brought back to life.
  • Hunspell Dictionaries A collection of Hunspell dictionaries for use with emacs, or whatever else.
  • bc-extensions A collection of extensions for use with the bc unix calculator.

Python projects

  • SPR - Simple Process Repl A simple lisp like programming language and Application framework . SPR Wiki
  • PBR - Particle Board Repl The precursor to SPR. A simple lisp like programming language and Application framework for working with Particle.io boards.
  • Plysp A simple lisp after clojure using a BNR grammar, It works but falls short of complete. The plan is to turn the core into Cython when it is time for performance enhancement. It does not yet have tail call recursion or a complete implementation of macros among other things.
  • Bar QR code A simple program to print bar and qr codes. Written one afternoon according to the desires of a client. Not my style, but there it is. I rewrote this in SPR as an example, that one is nicer.

Clojure projects

  • Word search Collect meta data and create conjugaison trees from words in wiktionary.
  • bike gear calc A bike gear calculator for fixed gear, internal gear and deraileur gear bikes which uses Schema.
  • bike gear calc UI The beginning of a clojurescript/ReFrame UI for the bike gear calculator.

Libraries that I created and used within the Applications I created for Yeti Data.

  • clojure cli extension A library to make the creation of command line interfaces in clojure easier and more robust.
  • datetime data A datetime library for normalizing dates.
  • file access A file-access library which creates a consistent API for various types of files, S3, SFTP, Github.

Dfs datastores, These libraries were inspired by Nathan Marz, his book Big Data and the Lambda Architecture. Pre Clojure/Schema. Uses Prismatic Schema and Fressian.

  • dfs-clj A library which combines all of the dfs libraries into one, for managing dfs datastores with cascalog on hadoop. The following libraries are all embodied in dfs-clj.
    • pail-graph Extension library to streamline the use of Graph Schema thrift objects with Pail and Cascalog.
    • pail-schema Dfs-datastores Pail infrastructure using Prismatic Schema and Fressian.
    • clj-pail-tap Extension library to enable easier tapping of pails.
    • Pail-Fressian Pail structure, serializer and partitioners using Fressian.
    • Pail-Schema-Example Example of using pail-schema to validate, coerce, and write data to a pail, then query it with cascalog.
    • clj-thrift A Clojure abstraction for Thrift.
    • clj-pail A Clojure abstraction for working with Pail.
    • pail-thrift Serialization and partitioning strategies for using Thrift with clj-pail.
    • pail-cascalog A Clojure library for working with Pail within Cascalog.
    • thrift-pail-cascalog-example An example of using graph schema, thrift, pail and cascalog..

Code tests and explorations

  • Exercism Clojure, Haskell, scheme, python. The exercises I´ve done over the years in Exercism.
  • flickr-fetcher Clojure/Design. A design for a not so simple http endpoint to give recent images from flickr. This solved the enterprise´s problems with scalability, image size and quality, while allowing compromises and staging of the implementation according to resource availability.
  • Suduku validator Clojure: A calculator to validate a suduku board. A nicer solution to a code test I did in python.
  • Poker Clojure: A game of poker from the Asheville Coders League Day of Code challenge.
  • Swapp Clojure: A simple example to understand clojurescript and figwheel.
  • Product Inventory Server Python & flask, A product inventory server. A code test.
  • Product Inventory UI A clojurescript/ReFrame/React front end for a product inventory control system.

SAS related projects, papers, etc.

  • ODS Markup: Tagsets by Example - A book I wrote many years ago about ODS Markup and tagsets.
  • SAS-Papers The various papers I wrote and presented during my time at SAS.
  • SAS-Examples The Example code to go with all of the papers.
  • SAS-Tagsets The Source for all the official ODS Markup Tagsets as of 2013.
  • SAS-Vim Vim extensions for programming with Vim. - As an emacs/evil user I do not use this, apparently many people do.

Contributions

  • QMK Firmware QMK firmware for custom keyboards.
  • Open SCAD clj A clojure wrapper for Open-scad so that scad can be programmed from clojure.
  • Golden Ratio Emacs package which automatically resizes windows in an intelligent way.
  • cider Clojure environment for emacs.

Pinned

  1. Simple_Process_REPL Simple_Process_REPL Public

    An Application framework for creating processes with side effects.

    Python 1 2

  2. MyQMK MyQMK Public

    My user space and keymaps for the qmk firmware

    C 3 3

  3. xmonad-setup xmonad-setup Public

    my setup files for xmonad

    Lua 3 3

  4. scad-clj scad-clj Public

    Forked from farrellm/scad-clj

    OpenSCAD DSL in Clojure

    Clojure

  5. plysp plysp Public

    A clojure like lisp written on top of python

    Python 1

  6. Arch-Setup Arch-Setup Public

    Automation of package and configuration repository installation on Arch Linux

    Shell 1 1