Blogging in Lisp


Feed Aggregator

Rendered on Sun, 28 May 2017 12:02:46 GMT  newer latest older 
Next udpate: Sun, 28 May 2017 12:30:00 GMT feeds

Patrick Stein: Fog of Light - Starting to Add Star-Fields

via Planet Lisp by on Sun, 28 May 2017 05:49:24 GMT

I have finally written my first OpenGL code using GLSL. Whew. That took way too long to get all working correctly. I promise, soon, I will upload some sample code so that others may not have to stumble as long as I did.

For the star-field, I generate a few thousand 2-D points. Each point has its own radius, its own opacity, and its own color.

I put these all into an OpenGL array buffer. Then, the vertex shader copies data out of my struct to set the color and the point size. Then, the fragment shader turns the color into two, overlapping radial gradients (one that is half the radius of the other) by modulating the color’s opacity.

screenshot of sample starfield

Next up will be nebulae, then planets/asteroids in the local system.

Zach Beane: Roger Corman talk in the Bay Area

via Planet Lisp by on Sat, 27 May 2017 09:34:07 GMT

Roger Corman talk in the Bay Area

Roger Corman talk in the Bay Area

via Zach Beane Common Lisp by on Sat, 27 May 2017 09:34:07 GMT

Roger Corman talk in the Bay Area

Experience Economy, user interviews, and design discovery

via DockYard blog by Maria Matveeva on Fri, 26 May 2017 00:00:00 GMT

The principle of customer sacrifice illustrates how a discovery process can reveal new opportunities.

Optimizing Your Elixir and Phoenix projects with ETS

via DockYard blog by Chris McCord on Fri, 19 May 2017 00:00:00 GMT

Learn how to optimize your elixir applications with a fast in-memory store

Quicklisp news: May 2017 Quicklisp dist update now available

via Planet Lisp by on Sun, 21 May 2017 00:00:00 GMT

New projects:
  • cepl.glop — glop host for cepl — BSD 2 Clause
  • cepl.sdl2-image — Some helper methods for using sdl2-image to load images to CEPL types — BSD 2 Clause
  • cepl.sdl2-ttf — A few additional helpers for making working with sdl2-ttf even easier from CEPL — BSD 2 Clause
  • cl-clblas — clBLAS binding — Apache License, Version 2.0
  • cl-emoji — cl-emoji provides the Unicode emoji characters — MIT
  • cl-fond — Bindings to libfond, a simple text rendering engine for OpenGL — Artistic
  • cl-hamcrest — This library makes your CL unittests more readable. — New BSD
  • cl-ntp-client — A simple NTP (Network Time Protocol) client in Common Lisp — BSD
  • cl-pcg — A bare-bones Permuted Congruential Generator implementation in pure Common Lisp. — MIT
  • cl-sdl2-mixer — Bindings for SDL2_mixer — MIT
  • cl-trie — Common Lisp implementation of Trie data structure. — MIT
  • cl-why — (X)HTML generation macros — BSD
  • doubly-linked-list — An implementation of the doubly linked list data structure. — MIT
  • flac-parser — A parser for FLAC audio files. — MIT
  • fs-utils — Utilities for working with files and file paths. — MIT
  • gamebox-dgen — A procedural dungeon generator. — MIT
  • gamebox-ecs — An implementation of the Entity-Component System (ECS) pattern, popular with game development. — MIT
  • gamebox-frame-manager — A manager for frames within a game loop. — MIT
  • gamebox-grids — Create and manipulate tiles in a two-dimensional grid layout. — MIT
  • gamebox-math — A high performance math library useful for making games. — MIT
  • genie — A simple wrapper to generate portably seedable pseudo-random numbers. — MIT
  • — A markdown parser for Common Lisp — MIT
  • narrowed-types — Type definitions narrowed with predicates — BSD
  • simple-logger — A simple message logging system. — MIT
  • simple-routes — Facility for straightforward http routing on top of Hunchentoot. — 2 clause BSD
  • stealth-mixin — Library for creating stealth mixin classes. — FreeBSD, see file LICENSE.text
  • the-cost-of-nothing — Determine the cost of things in Common Lisp. — GPLv3
  • trivial-clipboard — trivial-clipboard let access system clipboard. — MIT
Updated projects3d-matrices3d-vectorsalexandriaarchitecture.builder-protocolarchitecture.service-providerarray-utilsbabelbeastcaveman2-widgetsceplcepl.cameracepl.devilcepl.sdl2cepl.skitterchirpcl-anacl-ascii-artcl-bencodecl-cache-tablescl-cuddcl-custom-hash-tablecl-digraphcl-enumerationcl-gamepadcl-gpiocl-html5-parsercl-ixfcl-jpegcl-json-templatecl-k8055cl-monitorscl-mpg123cl-oclapicl-openglcl-out123cl-passcl-pslibcl-pythoncl-sandboxcl-sdl2cl-sdl2-imagecl-sdl2-ttfcl-slugcl-soilcl-spidevcl-strcl-tasuketecl-unificationcl-vectorscl-videocl-xkbclackclassimpclazyclinchclipclmlcloser-mopclssclxcoleslawcolleencolorizecroatoancrypto-shortcutsdeedsdefenumdeferreddendritedexadordirtdissectdocumentation-utilsdynaesrapfare-memoizationfast-ioflarefnforform-fiddleglsl-specglsl-toolkithu.dwim.asdfhu.dwim.debughu.dwim.defhu.dwim.perechu.dwim.presentationhu.dwim.rdbmshu.dwim.reiteratehu.dwim.urihu.dwim.utilhu.dwim.web-serverhumblerinquisitoriolibironcladjonathanjson-streamsjsonrpckenzolambda-fiddlelasslegitlichat-protocollichat-serverliblichat-tcp-clientlichat-tcp-serverlichat-ws-serverlisp-namespacelocal-timelquerymaidenmcclimmd5mel-basemodularizemodularize-hooksmodularize-interfacesmonkeylib-htmlmonkeylib-jsonneo4clnew-opninglenorthoclclomer-countparachuteparser.common-rulespathname-utilspipingplumpplump-bundleplump-sexpqlotqt-libsqtoolsqtools-uirandom-stateratifyread-csvredirect-streamrtg-mathrutilsserapeumsimple-inferiorssimple-tasksskittersoftdrinksouthspinneretstaplestructy-defclassstumpwmtemporal-functionstmtranslatetriviatrivial-argumentstrivial-benchmarktrivial-indenttrivial-main-threadtrivial-mimestrivial-thumbnailubiquitousuiopvarjoverboseweblocksxhtmlambda.

Removed projects: cl-geo, cl-wkb, cl4l, clim-pkg-doc, gsharp, lifoo, lisp-binary.

To get this update, use (ql:update-dist "quicklisp"). Enjoy!

Patrick Stein: Fog of Light - Getting Underway

via Planet Lisp by on Mon, 15 May 2017 14:09:57 GMT

Dauntless (The Lost Fleet, Book 1) was the first science-fiction book I read that tried to deal with space combat with the real-world constraint that light only travels so fast. It takes light eight minutes to get from the Sun to Earth. It takes light more than a second to get from the Earth to the Moon. Depending on where they are in their orbits, it takes between three minutes and twenty-two minutes to get light from Mars to Earth.

Imagine that you’re a star-ship. You and your companions have just warped into a new star system. You see a flotilla of enemy ships about 45 light-minutes away. That means, you’ve got 45 minutes before that flotilla can possibly even know that you’re in their star system. How much can you get done in that time? Once they can see you, how much can you mislead them on your target if they’re going to be operating on data about where you were heading more than half an hour ago?

For years, I have been batting around this concept, hammering it into a game. I have finally gotten started on it.

Armed with some functions like these, I am constructing values which change at points in space-time and querying the value visible from other points in space-time.

(defgeneric get-nearest-value (space-time-value space-time-point)
  (:documentation "Find the observable value of a quantity
SPACE-TIME-VALUE when observed from a given location
SPACE-TIME-POINT. This method finds the most-recent
value V0 (at location P0) for this data when viewed from
the given location. This method returns (VALUES V0 P0).
This method makes no effort to interpolate the results."

Here are my first, visually-demonstrable results:

Hopefully, there will be plenty more coming in the near future.

Erlang/OTP 20.0-rc1 is available for testing

via News RSS by on Fri, 05 May 2017 00:00:00 GMT

img src=

OTP 20 Release Candidate 1

This is the first of two release candidates before the OTP 20 release in June 2017.

The intention with this release is that you as users try it and give us feedback if something does not work as expected. Could be a bug, an unexpected incompatibility, a significant change of characteristics in negative direction, etc.

Erlang/OTP 20.0 is a new major release with new features, quite a few (characteristics) improvements, as well as a few incompatibilities.

Here are some of the most important news:

Potential Incompatibilities

  • ERTS:

    • The non SMP Erlang VM is deprecated and not built by default
    • Remove deprecated erlang:hash/2
    • erlang:statistics/1 with scheduler_wall_time now also includes info about dirty CPU schedulers.
    • The new purge strategy introduced in OTP 19.1 is mandatory and slightly incompatible for processes holding funs
      see erlang:check_process_code/3.
    • The NIF library reload is not supported anymore.
  • Asn1: Deprecated module and functions removed (asn1rt, asn1ct:encode/3 and decode/3)

  • Ssh: client only option in a call to start a daemon will now fail



  • Dirty schedulers enabled and supported on VM with SMP support.
  • support for “dirty” BIFs and “dirty” GC.
  • erlang:garbage_collect/2 for control of minor or major GC
  • Erlang literals are no longer copied when sending messages.
  • Improved performance for large ETS tables, >256 entries (except ordered_set)
  • erlang:system_info/1 atom_count and atom_limit
  • Reduced memory pressure by converting sub-binaries to heap-binaries during GC
  • enif_select, map an external event to message


  • Code generation for complicated guards is improved.
  • Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, 'a'=>3} will warn for the repeated key a.
  • By default there is now a warning when export_all is used. Can be disabled
  • Pattern matching for maps is optimized
  • New option deterministic to omit path to source + options info the BEAM file.
  • Atoms may now contain arbitrary unicode characters.
  • compile:file/2 has an option to include extra chunks in the BEAM file.

Misc other applications

  • Unnamed ets tables optimized
  • A new event manager to handle a subset of OS signals in Erlang
  • Optimized sets add_element, del_element and union
  • Added rand:jump/0-1
  • When a gen_server crashes, the stacktrace for the client will be printed to facilitate debugging.
  • take/2 has been added to dict, orddict, and gb_trees.
  • take_any/2 has been added to gb_trees
  • Significantly updated string module with unicode support
  • erl_tar support for long path names and new file formats
  • Dtls: Documented API, experimental
  • SSH: improving security, removing and adding algorithms
  • New math:fmod/2

For more details see

Pre built versions for Windows can be fetched here:

On line documentation can be browsed here:

Thanks to all contributors.

 newer latest older