RISCY BUSINESS»Blog
Neo Ar
For the month of November we did the following:

  • Studied GAS .weak, .section, and .align [RISCY 52]
  • Implemented va_args, environ, _start, and a build script [pcalc 1, pcalc 2]

For the month of December we did the following:


November saw the beginning of my streaming the development of pcalc. In December we got back to a more respectable amount of work being done, and made headway in RISCY BUSINESS as well as the Book Club. The Book Club saw the introduction of a new book in the line up: The RISC-V Reader! We also made good progress on pcalc. Not only this, but now we have the annotated episode guide thanks to Miblo for his amazing work on Cinera. On the negative side of things, patreon had a fiasco which has left me in need of an alternative platform for supporters who no longer want to use patreon. I'll be providing an alternative to patreon in the coming months. However, I will be keeping patreon as well. Phew! Talk about a lot of exciting stuff going on since the last monthly overview. I'm hoping that trend continues!

Stay RISCY!
Neo Ar
For the month of September we did the following:

  • Studied the local-interrupts demo [RISCY 47]
  • Studied the global-interrupts demo [RISCY 48]
  • Worked through COAD 1.13 Exercises 12-15 [COAD 13]

For the month of October we did the following:


I've been making slow but steady progress on the x11 backend for pcalc (nothing to show yet), and I've renamed all the book club episodes to the format "Book Club (BOOK) - Day #: Sections" in preparation of having multiple books in-flight at once.

Stay RISCY!
Neo Ar
For the month of August, we did the following:


Bit of a slower month this time but now that COAD Chapter 1 exercises are out of the way I'm excited to get back to doing RISCY BUSINESS episodes :) On a technical side, I've set up a script called jack-matchmaker to automatically handle my audio connections in jack which helps out a lot and should prevent those occasional times when I forget to make a connection in jack. I've also added twitch alerts to my stream - if viewers follow, donate, or host, a gif with text overlay shouting them out will be displayed and a sound effect will play! Donations are a new way to financially contribute to the series, currently only via paypal. The link is on my twitch page, I'm still working on making some less terrible art and writing a good bio for it. One other thing about the donation system is that the donation page has wishlist items - I'll be able to list items I want to buy for the series and viewers can donate the price of the item, this doesn't actually buy the item but the intention is that I would use the money to buy the item donated for, of course. Currently I only have a treadmill on the list which would be ridiculous for someone to actually donate for but I intend to add more reasonable items soon such as longer cables so that I can use my desk as a standing desk (it is adjustable with power lifting, I just don't have long enough cables for my system right now so I only use it sitting)

Regarding pcalc, it currently has an xcb backend with double buffering and the text input field has vi modes (lacking features), and handles scrolling within the text box display. The xcb backend is being replaced with a backend that does raw x11 unix socket communication (I will leave the xcb backend in the source and maybe work on it some still but it won't be used). Haven't worked on it recently but I'll be working on it more soon.

Stay RISCY!
Neo Ar
For the month of July, we did the following:


Talk about a big month for RISCY BUSINESS! I left my previous job at Aker to pursue streaming full-time.

Outside of RISCY BUSINESS, I competed in my first couple tournaments for Shadowverse and am excited to continue pursuing the competitive scene.

With the first release of nwr_mem.h out of the way, I've been taking a break from working on it to start my second software offering to $5 backers: a programmer's calculator! It is still early in development but here is a mock-up I made in GIMP



...and here is a screenshot of what I've made so far...



IRC logs discussing the design:
20:44 <miotatsu> I've started working on my calculator program also but I haven't streamed any of the dev yet, so far just doing xcb stuff
20:47 <miotatsu> it will just do hex, binary, decimal, maybe octal if I need it, vi controls, all the kinds of operations you have in C, etc
20:48 <miotatsu> result automatically shows up in result, outer 0s in the box = hex, inner = binary
20:48 <miotatsu> the number on the right outside of the box will be in decimal
20:49 <miotatsu> selection is whatever number the cursor is over, or if you go into visual mode the result of the highlighted sub expression
20:49 <miotatsu> and you can yank from selection or result into the clipboard in hex, binary, decimal, maybe octal
20:50 <miotatsu> should be pretty useful I think
20:51 <@Miblo> Yeah. You do do a fair bit of calculations / conversions in RISCY
20:53 <miotatsu> yep, that's my main motivation for it, risky_five gave me the idea for it, we were discussing intuitions about some binary stuff after one of the streams I think and he mentioned how it can be useful to see the hex and binary while you are doing calculations
20:53 <miotatsu> and I remembered how the calculator in Windows in the programming mode does something sort of like that
20:53 <miotatsu> figured I might as well make a good one for Linux
20:54 <miotatsu> doing it handmade style in C, using musl for the C runtime and static linking everything, will probably cut out the C runtime completely later
20:54 <ratchet_freak> that thing is nice
20:54 <ratchet_freak> you can also add a bin representation for floats and doubles
20:54 <ratchet_freak> and the hex notations for them
20:55 <miotatsu> yeah I intend for my calculator to support floating point, not just integers, it'll be like C/D/etc where you can specify the type as a suffix on the literal
20:58 <miotatsu> the idea is I should be able to do something like this
20:58 <miotatsu> M-c dd i 0x0FF0*100/2.0^^16 M-c
20:58 <miotatsu> where M-c would toggle the window in my wm
20:59 <miotatsu> and that would show me the 6.22 duty cycle in the decimal result
20:59 <miotatsu> ^^ being pow like in D
21:09 <@Miblo> Could be handy if it transparently delineates, e.g. thousands in decimal, nibbles in binary, so you could use vim's word-based movements / edits on them
21:16 <miotatsu> as in auto-formatting the input field?
21:17 <@Miblo> Yeah
21:17 <@Miblo> But not necessarily visually, just under the hood

Stay RISCY!
Neo Ar


Hey Everyone! As you might already know, I recently left my job at Aker to pursue full-time streaming. The video above covers all the important details.

I'd like to give you guys a little sneak peek at the first commercial software project I'm working on: nwr_mem.h

nwr_mem.h is an stb-style mit/public domain single header C library that will provide custom (user-space) memory allocator building blocks inspired by Andrei Alexandrescu's std.experimental.allocator work in the D programming language. The library will include things such as:

Allocators
  • Region
  • Kernighan-Ritchie Allocator
  • Bitmapped Block
  • Buddy Allocator
Modifiers
  • Affix Allocator
  • Stats Collector
  • Quantizer
Aggregates
  • Free Tree
  • Free List
  • Fallback Allocator
  • Bucketizer
  • Segregator

Additionally, the library is being written as a literate program, and a pdf file describing the design and implementation of the library will be available.

I want people to use and share my software regardless of whether they back me on patreon, which is why nwr_mem.h will be MIT/public domain, but officially I will only be distributing my copies to $5+ patrons. Think of the distribution model as piracy-made-legal!

The first version of nwr_mem.h that I will be releasing will include the first allocator: Region. The api can be seen below:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
NWR_INLINE NWR_DEF _Bool nwr_region_grows_down(nwr_region * r);
NWR_INLINE NWR_DEF size_t nwr_region_available(nwr_region * r);
NWR_INLINE NWR_DEF _Bool nwr_region_is_empty(nwr_region * r);
NWR_INLINE NWR_DEF _Bool nwr_region_is_full(nwr_region * r);
NWR_INLINE NWR_DEF _Bool nwr_region_is_subregion(nwr_region * r, void * p, size_t l);
NWR_INLINE NWR_DEF _Bool nwr_region_is_inside(nwr_region * r, void * p);
NWR_INLINE NWR_DEF _Bool nwr_region_is_alive(nwr_region * r, void * p);
NWR_INLINE NWR_DEF _Bool nwr_region_is_subregion_alive(nwr_region * r, void * p, size_t l);
NWR_INLINE NWR_DEF void nwr_region_reset(nwr_region * r);
NWR_INLINE NWR_DEF _Bool nwr_region_dealloc(nwr_region * r, void * p, size_t l);
NWR_DEF nwr_region nwr_region_create(void * ptr, size_t length, const nwr_u32 alignment, const nwr_u32 flags);
NWR_DEF void * nwr_region_alloc(nwr_region * region, size_t n);
NWR_DEF void * nwr_region_aligned_alloc(nwr_region * region, size_t n, nwr_u32 a);
NWR_DEF void * nwr_region_alloc_all(nwr_region * region, size_t * size);
NWR_DEF size_t nwr_region_expand(nwr_region * region, void * ptr, size_t length, size_t delta);


A dedicated topic for the library with more information will be made on the forums when it is ready to be released.

As always, thanks for the support, and stay RISCY!