<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Boroblog Atom Feed</title>
 <link href="https://borodust.org/atom.xml" rel="self"/>
 <link href="https://borodust.org/"/>
 <updated>2022-01-09T17:16:55+00:00</updated>
 <id>https://borodust.org</id>
 <author>
   <name>Pavel Korolev</name>
   <email>mail@borodust.org</email>
 </author>

 
 <entry>
   <title>:claw honing - Beta milestone and alien-works</title>
   <link href="https://borodust.org/2021/05/30/alien-works/"/>
   <updated>2021-05-30T00:00:00+00:00</updated>
   <id>https://borodust.org/2021/05/30/alien-works</id>
   <content type="html">&lt;p&gt;Long time no see my C++ autowrapping rants. But several bindings later, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt;
has reached the stage where it is ready to leave a garage and see the outside
world. Since my last post, some approaches were revised, though the autowrapping
process is still not fully cemented yet. I wouldn’t expect &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt; to be out of
beta for at least a year. That doesn’t mean it is unusable, but rather I cannot
guarantee a stable interface and a trivial procedure for setting it up.&lt;/p&gt;

&lt;p&gt;In other big news, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:alien-works&lt;/code&gt; system got
&lt;a href=&quot;https://github.com/borodust/alien-works/tree/b3cd069c0dfddf75fb0cf8f77065a08a537011cc#foundation&quot;&gt;all&lt;/a&gt;
required foreign libraries wrapped and integrated, including some complex and
peculiar C++ ones (&lt;a href=&quot;https://github.com/google/skia&quot;&gt;Skia&lt;/a&gt; 👀). Next step is to
write a game, based on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:alien-works&lt;/code&gt; framework, to see how much lispification
of autowrapped systems is possible without loosing any performance and what is
required for a solid game delivery.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>:claw honing - First milestone</title>
   <link href="https://borodust.org/2020/08/11/claw-honing/"/>
   <updated>2020-08-11T00:00:00+00:00</updated>
   <id>https://borodust.org/2020/08/11/claw-honing</id>
   <content type="html">&lt;p&gt;Huge first milestone for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt; honing is reached - I’ve run C++ library
routines (&lt;a href=&quot;https://github.com/NVIDIAGameWorks/PhysX&quot;&gt;PhysX&lt;/a&gt;) from Common Lisp
without writing any &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C/C++&lt;/code&gt; myself, without writing any bindings
manually. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt; generated &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C&lt;/code&gt; adapter and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CL&lt;/code&gt; bindings, I only built the former
and called the latter.&lt;/p&gt;

&lt;p&gt;This is an important proof of the concept:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IFFI&lt;/code&gt; approach works&lt;/li&gt;
  &lt;li&gt;C wrapper generation for C++ is possible with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libresect&lt;/code&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libclang&lt;/code&gt;) - no
need to dive into llvm/clang development libraries any deeper, or so it seems so
far.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;99% work done, so only another 99% left.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>:claw honing</title>
   <link href="https://borodust.org/2020/06/12/claw-honing/"/>
   <updated>2020-06-12T00:00:00+00:00</updated>
   <id>https://borodust.org/2020/06/12/claw-honing</id>
   <content type="html">&lt;p&gt;Free time too play with CL is quite a luxury item for me as of late, but
finally! - I’ve got a whole week of me-time and I’m planning to pour all of it
into &lt;a href=&quot;https://github.com/borodust/claw&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt;&lt;/a&gt; - the precious jewel at the
heart of most of my projects.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt; is a library for automatically creating Common Lisp bindings to foreign
libraries that provide C interface. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt; already works well, but having
access only to libraries with C-compatible interface is quite limiting. I’m a
game developer both at work and at home and a lot of gamedev libraries are
either C++ only and don’t export any C interface at all or such interface is
out-of-date or heavily underdocumented. Unfortunately, I don’t have enough
man-hours to reimplement all of those in pure Common Lisp myself and bindings
seem like a huge time saver. That’s right, I’m working on bringing C++ support
into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In this post, I’ll try to summarize how I envision this support being
implemented in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;:claw&lt;/code&gt;. If you think something can be done better, faster or
maybe I’m plain wrong somewhere - I appreciate if you drop a comment with your
ideas here or via &lt;a href=&quot;/about/&quot;&gt;email/IRC&lt;/a&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>trivial-gamekit's future</title>
   <link href="https://borodust.org/2019/05/27/gamekit-future/"/>
   <updated>2019-05-27T00:00:00+00:00</updated>
   <id>https://borodust.org/2019/05/27/gamekit-future</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019&quot;&gt;Lisp Game Jam 2019&lt;/a&gt; is over and there
are quite a number of submissions based on
&lt;a href=&quot;https://github.com/borodust/trivial-gamekit&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;trivial-gamekit&lt;/code&gt;&lt;/a&gt; this time:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019/rate/415397&quot;&gt;Decent Magician Of the Moldy Dungeon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019/rate/415347&quot;&gt;NOTALONE: AGAIN&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019/rate/413733&quot;&gt;Pong Fight&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019/rate/413829&quot;&gt;Split-Shot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2019/rate/410429&quot;&gt;Lispout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to everyone who participated and I’m especially grateful to authors of
above games for their trust in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gamekit&lt;/code&gt;. Any jam is a stress and having solid
tools during this time is very important. Thank you for giving &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gamekit&lt;/code&gt; a
chance!&lt;/p&gt;

&lt;p&gt;I’ve received a couple questions about &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;trivial-gamekit&lt;/code&gt; future and what
direction it is heading.&lt;/p&gt;

&lt;p&gt;Here’s my answer.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Guide to cl-bodge graphics system is in the works</title>
   <link href="https://borodust.org/2018/08/26/hello-bodge-graphics/"/>
   <updated>2018-08-26T00:00:00+00:00</updated>
   <id>https://borodust.org/2018/08/26/hello-bodge-graphics</id>
   <content type="html">&lt;p&gt;Unbeleivably, I’ve got into writing more &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cl-bodge&lt;/code&gt; docs recently. But you know what, now I know
how to make it a lot more fun - literate programming!&lt;/p&gt;

&lt;p&gt;Common Lisp, SLY/SLIME and Emacs &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org-mode&lt;/code&gt; are especially good for this kind of task.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org-mode&lt;/code&gt; exposes tools for evaluating code blocks directly from a document and tangling those
blocks into source files appropriately, while Common Lisp + SLY/SLIME combination allows you to
gradually build your project evaluating code bit-by-bit in a live session, meaning you are
writing documentation and building a project at the same time, &lt;em&gt;meaning&lt;/em&gt; you are not getting
bored of writing plaintext as much, which is just an amazingly handy trait of writing guides or
examples in literate programming style.&lt;/p&gt;

&lt;p&gt;To have a sneak peek into what’s coming, you can have a look at the &lt;a href=&quot;https://github.com/borodust/hello-bodge-graphics/blob/master/hello-bodge-graphics.org&quot;&gt;WIP
guide&lt;/a&gt; on
GitHub. All source code in this project is generated from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.org&lt;/code&gt; files. You can’t use the guide
yet, because latest &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cl-bodge&lt;/code&gt; updates are not published into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cl-bodge&lt;/code&gt; dist. You can clone
whole &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bodge-projects&lt;/code&gt; repository recursively into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/quicklisp/local-projects/&lt;/code&gt;, but I would
recommend against this practice. At least don’t forget to delete all the cloned stuff after
trying it out.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>cl-bodge documentation efforts has begun</title>
   <link href="https://borodust.org/2018/06/06/cl-bodge-overview/"/>
   <updated>2018-06-06T00:00:00+00:00</updated>
   <id>https://borodust.org/2018/06/06/cl-bodge-overview</id>
   <content type="html">&lt;p&gt;It started, at last!&lt;/p&gt;

&lt;p&gt;I have so much going on in CL land that writing a documentation for a thing no one uses (besides
me, obviously) and is not even stable enough, is literally one of the last things I consider
doing. But lately there was some interest in &lt;a href=&quot;/projects/trivial-gamekit/&quot;&gt;trivial-gamekit&lt;/a&gt; internals&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; which is really just a high-level &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cl-bodge&lt;/code&gt;
interface, so I finally decided to bring my ass into writing at least some documentation for
most stable parts of it. Refreshed &lt;a href=&quot;/projects/cl-bodge/&quot;&gt;introductory&lt;/a&gt; and an
&lt;a href=&quot;/projects/cl-bodge/overview/&quot;&gt;overview&lt;/a&gt; pages so far.&lt;/p&gt;

&lt;p&gt;Hopefully, that wouldn’t be the end of it - the immense effort generic programmers like myself
 very love to engage with.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;literally, a couple of people asked - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cl-bodge&lt;/code&gt; is famous now! &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>April's 2017 Lisp Game Jam Postmortem</title>
   <link href="https://borodust.org/2017-04-lgj-postmortem"/>
   <updated>2017-05-03T00:00:00+00:00</updated>
   <id>https://borodust.org/lgj-postmortem</id>
   <content type="html">&lt;p&gt;That was a blast! And so &lt;a href=&quot;https://borodust.itch.io/mortar-combat&quot;&gt;Mortar Combat&lt;/a&gt; was born.&lt;/p&gt;

&lt;p&gt;I probably should have stopped right here, but, apparently, there quite a few people interested
in the events of those days. Their minds call them to fill up the void made by vicious curiosity
that delves deeper and deeper to clear space for pure knowledge of what actually happened during
the sacred ritual known as &lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2017-easy-mode&quot;&gt;Lisp Game Jam&lt;/a&gt;
where miraculous &lt;a href=&quot;https://itch.io/jam/lisp-game-jam-2017-easy-mode/rate/134760&quot;&gt;Mortar Combat&lt;/a&gt;
was bor… —Nah, right, you got me there— No one cares, but I’m still gonna put some words
about it here nevertheless.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#preparations&quot;&gt;Preparations&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#games-socks-and-decision&quot;&gt;Games, Socks and Decision&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#realization&quot;&gt;Realization&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#plans&quot;&gt;Plans&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#devlog&quot;&gt;DevLog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;2017-04-lgj-postmortem#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Delivering games written in Common Lisp</title>
   <link href="https://borodust.org/delivering-common-lisp"/>
   <updated>2017-05-02T00:00:00+00:00</updated>
   <id>https://borodust.org/lisp-delivery</id>
   <content type="html">&lt;p&gt;Speaking generally, we can split end-users of a game into two groups: conventional gamers and
those who would like to tinker with game sources, if there’s such option. Several ways exist to
serve needs of both groups. In this piece of writing we would look into two of them:
via &lt;a href=&quot;https://www.quicklisp.org/&quot;&gt;Quicklisp&lt;/a&gt; or bundling executable with required resources
(game assets, dynamic libraries, configs, etc) into downloadable package.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;delivering-common-lisp#quicklisp&quot;&gt;Quicklisp&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;delivering-common-lisp#bundle&quot;&gt;Bundle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Introducing boroblog</title>
   <link href="https://borodust.org/2017/03/15/hello-wwworld/"/>
   <updated>2017-03-15T00:00:00+00:00</updated>
   <id>https://borodust.org/2017/03/15/hello-wwworld</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Sharing is caring!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the past there were a couple of requests to write about my experiences with various tools. Sometimes I just had something to say on a particular topic. Therefore, I finally decided to organize a place to share my thoughts and whatever knowledge I had acquired no one else probably cares about.&lt;/p&gt;

&lt;p&gt;And here we are now. Welcome to boroblog! Place where I can polish my english writing skills at the expense of readers curiousity.&lt;/p&gt;
</content>
 </entry>
 

</feed>
