re:fi.64

We Don't Need to Boycott Wayland

We Don't Need to Boycott Wayland

Created on 2020-10-31 - Comments

If you couldn’t tell by the title, this is a response to this gist, stating that we should boycott Wayland because something something Red Hat evil and breakage and…​global menus? Well, there were quite a few exaggerations and misrepresentations in the gist, which will be shown and explained here.

Read more...

VueDart 0.4 released!

VueDart 0.4 released!

Created on 2018-10-08 - Comments

After almost a year, I'm happy to finally be able to announce VueDart 0.4! It's got Dart 2.0 support, a ton of great changes, a new website , and more. This is definitely a much bigger release than even 0.3 was!

Read more...

Getting rid of version warnings: an experiment at hacking the Linux/glibc dynamic linker to shut up

Getting rid of version warnings: an experiment at hacking the Linux/glibc dynamic linker to shut up

Created on 2018-01-02 - Comments

If you use a non-Debian/Ubuntu distro (I recently switched to Arch), you've probably had a moment where you downloaded some binaries and tried running them, only to get an error like this:

$ lldb-argdumper -h
usr/bin/lldb-argdumper: /usr/lib/libtinfo.so.5: no version information available (required by usr/bin/lldb-argdumper)
usr/bin/lldb-argdumper: /usr/lib/libtinfo.so.5: no version information available (required by /tmp/tmp.8oiyW382Pu/usr/bin/../lib/liblldb.so.4)
usr/bin/lldb-argdumper: /usr/lib/libtinfo.so.5: no version information available (required by /tmp/tmp.8oiyW382Pu/usr/bin/../lib/liblldb.so.4)
usr/bin/lldb-argdumper: /usr/lib/libpanel.so.5: no version information available (required by /tmp/tmp.8oiyW382Pu/usr/bin/../lib/liblldb.so.4)

Ugh. Normally these warnings are nothing more than an annoyance. However, recently I started trying to get Swift working on my new Arch install. With Swift, the warnings suddenly turned much more lethal: some part of swift package build assumes that, if one of the commands outputs anything (including these warnings), it has failed, and the build will be aborted.

Obviously, I couldn't stand for this. I mean, how hard could this be to fix?

(Spoiler alert: if you want to cut to the chase, I created a tool called qldv that does everything listed below already.)

Read more...

VueDart 0.3.1 released!

VueDart 0.3.1 released!

Created on 2017-11-19 - Comments

Read more...

VueDart 0.3 released! Featuring scoped styles, mixins, a CLI, and more!

VueDart 0.3 released! Featuring scoped styles, mixins, a CLI, and more!

Created on 2017-11-19 - Comments

After a few months of quiet, I'm super proud to announce VueDart 0.3! Unlike 0.2 (which should've been a minor release, except I wasn't thinking clearly), 0.3 brings an enormous amount of new features, bugfixes, and more.

Read more...

Going from Polymer to Vue, from JavaScript to Dart

Going from Polymer to Vue, from JavaScript to Dart

Created on 2017-10-10 - Comments

Remember the post a while back where I rewrote my website in Polymer? Yeah?

Well, I rewrote it. Again.

Read more...

When replacing a hard drive turns into a fried motherboard, a VM mess, and a slow USB stick

When replacing a hard drive turns into a fried motherboard, a VM mess, and a slow USB stick

Created on 2017-05-26 - Comments

Have you ever tried to do something simple, like changing a lightbulb, but in the end you end up rewiring your house, the neighbor's house, and the governer's ice box? Yeah, that's how I felt. It all started with...

Read more...

Moving from Nikola to...Polymer!?

Moving from Nikola to...Polymer!?

Created on 2016-05-29 - Comments

EDIT: Yup, I rewrote it again. More info here.

We've all done those things before. You know it's a horrible idea, but it just sounds so cool that you can't resist.

Well, that's why I decided to move away from Nikola (which is awesome BTW) and roll a home-made website using Polymer and the paper components.

Read more...

An idea for concise, checked error handling in imperative languages

An idea for concise, checked error handling in imperative languages

Created on 2016-03-20 - Comments

Yes, the post title sucks. However, I can't think of anything better...

This is an idea I've had for a while on an error handling model that tries to combine safe, checked code with the conciseness of unchecked exceptions. It's somewhat of a "rough draft", so to speak, and the syntax I'm using is just an example.

Read more...

A tour of the Howl programming text editor

A tour of the Howl programming text editor

Created on 2016-03-20 - Comments

Check it out on YouTube or right here:

Read more...

Implementing a (sort of) generic, (sort of) type-safe array in C

Implementing a (sort of) generic, (sort of) type-safe array in C

Created on 2015-11-28 - Comments

I've been using C for a project I've been working on, and one thing I find annoying are manually-managed arrays. Ever since watching Bjarne Stroustrup's talk on linked lists , I try to avoid using those as much as possible. Therefore, I prefer using a container roughly equivalent to C++'s vector.

The obvious thing to do here would be to use something like glib's GArray type or qlibc's qvector type . However, both APIs require using sizeof and are completely not-type-safe; it's easy to add a char to an array/vector of ints. This made me wonder: is it possible to implement a type-safe, generic array type in C?

Now, I mean the C version of type-safe, which basically means that your compiler has to show either a warning or an error (probably if compiling with -Werror ) when you try to append the wrong type to an array.

Read more...

Programming Decisions

Programming Decisions

Created on 2015-06-19 - Comments

DISCLAIMER: This is a satirical post. If your name is mentioned in a diminishing way, don't be insulted; I insult myself a few times throughout the post. Also, I like some of the projects I made fun of, including C++, JavaScript, Kotlin, Nim, Fbuild, and plenty of others. Again, this is satirical.

A farmer couldn't figure out how to maintain his web servers, so he gave it to his animals. However, they simply couldn't agree on what tools to use.

Read more...

The Magic of RPython

The Magic of RPython

Created on 2015-05-29 - Comments

RPython is a really nice translation framework that converts a (very) restricted subset of Python 2 to C code. Better yet, RPython will generate JITs for your interpreters. Although there are very good articles on how to write interpreters with RPython, I don't often find anything that describes the language itself. My goal with this post is to do just that: describe RPython itself. I'm going to leave out the things about the JITs; the RPython FAQ links to a good tutorial about that.

Read more...

The top 5 programming languages you've never heard of (part 2)

The top 5 programming languages you've never heard of (part 2)

Created on 2015-03-08 - Comments

Yesterday, I wrote a post about the top 5 programming languages you've never heard of . Well, since it was kind of short (I didn't have too much time to write), I'm going to put a little more info here.

Read more...

The top 5 programming languages you've never heard of

The top 5 programming languages you've never heard of

Created on 2015-03-07 - Comments

Lately, there's been a large surge in new programming languages as projects such as Rust have been taking the spotlight and showing lots of promise. However, there are some programming languages few have heard of that deserve to be more popular. Here's a brief listing of some of my favorite languages that aren't common sights.

Read more...

Using AppVeyor to distribute Python wheels

Using AppVeyor to distribute Python wheels

Created on 2014-09-21 - Comments

Wheels are the future of distribution. No more messy broken setup.py scripts or need for a compiler to build C extensions! Of course, this has a glaring issue: a Linux user can't build Wheels of their C extension for Windows. Unless, of course, you use Travis CI , install the MinGW compilers, define the compiler variables, etc. However, there is an easier way: AppVeyor .

Read more...

Overloading functions with the C preprocessor

Overloading functions with the C preprocessor

Created on 2014-09-15 - Comments

Let's have an imaginary scenario: you're trying to make a library that has a special function, myfunc . Now, this functions needs to have two possible ways to invoke it. One way takes one int parameter, the other takes two. Here's how you might do that in C++:

Read more...

Welcome!

Welcome!

Created on 2014-09-10 - Comments

First post!

This website is my first ever web page. It's written using the excellent Nikola and reStructuredText. ( EDIT: Well now it's completely different. It uses Polymer; see this post .) ( EDIT 2: Aaaand I changed it again. It's now written using Vue.) The majority of its content is going to revolve around programming: tutorials, experiments, and lots and lots of rants. :)

Have fun browsing!

Read more...