alexkarle.com

Source for alexkarle.com
git clone git://git.alexkarle.com/alexkarle.com.git
Log | Files | Refs | README | LICENSE

creative-coding.7 (1846B) [raw]


      1 .Dd July 18, 2021
      2 .Dt CREATIVE-CODING 7
      3 .Os
      4 .Sh NAME
      5 .Nm creative-coding
      6 .Nd learning through creative limitation
      7 .Sh DESCRIPTION
      8 I was talking to a friend recently about hobby coding
      9 and ways to code creatively.
     10 In the course of that conversation,
     11 I was able to put a name to one of my favorite tactics:
     12 creative limitation.
     13 .Pp
     14 A quick internet search seems to associate the term with Phil Hansen
     15 and more traditional art,
     16 but I think it applies nicely to coding too.
     17 For example,
     18 with this site,
     19 I've chosen to restrict the tech stack to the OpenBSD base system.
     20 It wasn't the initial goal (which was to learn
     21 .Xr mdoc 7 ) ,
     22 but I quickly realized that restricting to base would give me
     23 a better chance to learn base.
     24 .Pp
     25 Overall, I'd call it a success.
     26 .Xr jam-tuesday 7
     27 gave me a chance to learn some
     28 .Xr sh 1
     29 and
     30 .Xr sed 1 ,
     31 .Xr blog 7
     32 was a chance to learn
     33 .Xr mdoc 7 ,
     34 and the site's build system helped me brush up on BSD
     35 .Xr make 1 .
     36 .Pp
     37 I'd encourage you to try it \(em
     38 set an arbitrary restriction and see where it takes you!
     39 Here's a few ideas to get you started:
     40 .Pp
     41 .Bl -bullet -compact
     42 .It
     43 Write your own X window manager in as few lines of code as you can
     44 .It
     45 Write a version control system with
     46 .Xr sh 1 ,
     47 .Xr diff 1 ,
     48 and
     49 .Xr patch 1
     50 .It
     51 Write a blogging engine updated via email
     52 .It
     53 Write your own templating language (and parser)
     54 .El
     55 .Pp
     56 The goal, for me, is to choose a challenging project that helps
     57 me understand a technology I use daily but may take for granted
     58 (windowing systems, VCS, email, parsers, etc).
     59 .Pp
     60 Restricting size helps understand what the core definition of
     61 a technology is.
     62 Building clones can help teach edge cases and design decisions one
     63 might otherwise overlook.
     64 And in all cases, it's a good chance to learn a new language!
     65 .Sh SEE ALSO
     66 .Bl -bullet -compact
     67 .It
     68 .Xr blog 7
     69 .It
     70 .Xr my-old-man 7
     71 .El