1. 28

This is the weekly thread to discuss what you have done recently and are working on this week.

Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.

  1. 23

    I released a Rust crate to simulate a RISC-V CPU: https://github.com/stephank/rvsim

    This has been spare time project of several months. It was fun and challenging to build.

    The most recent work was the floating point parts, which is maybe the first time I actually took a good look at how floating point really works.

    Connecting the C parts of Berkeley SoftFloat was also fun, though I may try to translate the pieces I’m using to Rust. As another fun challenge.

    Eventually, I want to try and build little simulations of fictional machines with it. Kinda like Pico8 or ye olde RoboWar.

    1. 17

      Trying to finish a long running project: my e-ink computer.

      1. 3

        Amazing! Please keep us posted!

        Are you documenting the project anywhere else besides sporadic tweets?

        1. 4

          Yes, I document everything along the way. I do not like to publish about ongoing projects as I tend not to finish them when I do that :).

          Both the code and the CAD designs will be open sourced once the project will be finished.

          I also plan to write a proper blog post about it. I still need to figure out the proper way to do partial refresh with this screen and it should be more or less done (the wooden case still needs some adjustments).

          [Edit] Typos.

          1. 1

            Same, I would definitely be interested in following the project progress.

          2. 2

            Nice! What screen are you using, and how are you controlling it? Have you written any blog posts?

            1. 2

              It seems to be this one, same marks on the bottom corners and the shield looks the same:


            2. 1

              Is that a raspi it’s hooked up to? Where did you buy the screen?

              There is another guy doing e-ink stuff on the internet recently. You should go search for him. He is researching how to get decent refresh rates too.

              Instead of creating a laptop-like enclosure, you should make a monitor-like enclosure. It will look way better and more reusable.

              1. 1

                So, one of the thigns that annoys me about this world is how we don’t have e-ink displays for lots of purposes that nowadays get done with a run of the mill tablet. You don’t need a tablet for things like a board that shows a restaurant menu, or tracking buses in the area. So why can’t I find reasonably sized E-ink displays for such purpses?

                1. 1

                  Entirely agree with you.

                  I guess it can be explained by the fact that LCD screens have a better brightness, they are better to catch human eye attention.

                  The eink technology is bistable on the other hand, making it highly energy efficient for such applications - when no frequent updates are needed.

                  Energy is cheap nowadays, we don’t really care about energy consumption anymore. But I guess this might change past the peak oil.

                  I guess these techs will start developing as soon as energy becomes scarce and expensive.

              2. 14

                The Cambridge Analytics scandal has prompted me to delete Facebook and be much more aware of my privacy. I know that deleting Facebook is now a “cool” thing to do now, but it’s been a difficult decision. I still had many friends there that I have no other means of contacting. Ads have gotten much scarier recently, perfectly retargeted among services, so I was getting mentally ready for this. But stealing data for political purposes is where I draw the line.

                I’ve also replaced google with DuckDuckGo, and am planning on changing my email provider too. But I don’t know if it’s going to be futile. I still shop on amazon and use many other irreplaceable services like google maps.

                Again, I’m not a privacy freak. I try to find a middle ground between convenience and privacy, so these changes are hard for me

                Any recommendations for a balanced solution?

                1. 6

                  Whereas I’m about to have to get back on Facebook after being off quite a long time. I’ve simply missed too many opportunities among local friends and family info since they just refuse to get off it. Once it has them in certain numbers, they find it most convenient to post on it. That’s on top of the psychological manipulations Facebook uses to keep them there. I’ll still use alternatives, stay signed out, block JS, etc for everything I can. I will have to use it for some things for best effect.

                  The most interesting thing about leaving, though, was their schemes get more obvious. They tried to get me back in with fake notifications that had nothing to do with me. They’d look like those that pop up when someone responds to you but you’re not in the thread at all. They started with an attractive, Hispanic woman I’ve never seen from across the country that some friend knew. Gradually expanded to more attractive women on my Facebook but who I haven’t talked to in years or rarely like (not in my feed much). The next wave involved more friends and family I do talk to a lot. Eventually, the notifications were a mix of the exact people I’d be looking at and folks I’ve at least Liked a lot. I originally got nearly 100 notifications in (a week?) or something. Memory straining. Last time I signed in, there was something like 200-300 of them that took forever to skim with only a handful even real messages given folks knew I was avoiding Facebook.

                  So, that whole process was creepy as hell. Especially watching it go from strangers I guess it thought I’d like to talk to or date to people I’m cool with to close friends. A lure much like the Sirens’ song. Fortunately, it didn’t work. Instead, the services’ grip on my family and social opportunities locally are what might make me get back on. The older forms of leverage just in new medium. (sighs)

                  1. 3

                    It kind of depends on what you are trying to prevent. There are some easy wins through

                    1. As of March 2017 US ISPs automatically opt you in to Customer Proprietary Network Information. ISPs can sell this information to 3rd parties.. You can still opt out of these.
                      Look for CPNI opt out with your ISP.

                    2. uBlock Origin / uMatrix are great for blocking tracking systems.
                      These do affect sites who make they’re money based on ads however.

                    3. Opt out of personalized adverting when possible
                      Reddit, Twitter, even Google give you an option for this.

                    4. Revoke Unneeded Accesses
                      https://myaccount.google.com/u/1/permissions https://myaccount.google.com/u/1/device-activity

                    5. Make your browser difficult to fingerprint.
                      EFF has a tool called panopticlick that can show you how common your browser’s fingerprint is. I locked down what I could (there should be instructions on panopticlick’s site), and added an extension that cycles through various common user-agents. It might sound like overkill, its not onerous to do.

                    6. Don’t store longterm cookies.
                      I actually disabled this mostly. I still blocked for 3rd parties, but first party cookies are allowed now. Using a hardware key or password vault makes signing easy, but ironically the part that killed this for me more sites supporting 2FA. I use Cookie AutoDelete for Firefox.

                    7. Change your DNS provider.
                      I don’t have a good suggestion for this one. I use quad-9, but I don’t really know enough to say whether or not I trust them.

                    1. 2

                      Unlike an email or web server, setting up a resolving only DNS server is quite painless. I do this at home and rarely have issues. And if I do, I can reset it at whim instead of trying to fight with tech support.

                    2. 1

                      I pay $40/year for Protonmail. It is fantastic.

                      As for Facebook, why delete? It is actually a benefit to have an online presence for your identity, but you need to be careful with what about yourself you share. If you don’t take your online identity, someone else will. This is exactly why I’ve registered my name as a domain and kept it for years now. It is just another “string of evidence” that I am who I say I am on the internet.

                      My FB is just a profile picture now and nothing else. I have set my privacy settings to basically super locked down.

                      When it comes to socializing, there is little you can do to not be tracked. The only thing you can do is “poison the well” with fake information and keep important communication on secure channels (i.e. encrypted email, encrypted chat applications).

                      1. 1

                        I removed Facebook about 6 years ago and recently switched to Firefox beta and DDG. Gmail has had serious sticking power for me, though. I’ve had several fits and starts of switching email over the years but my Gmail is so intertwined with my identity nothing else has ever stuck.

                        It is possible to switch, I’m sure, but in my case, I have never committed quite enough to pull it off.

                        1. 3

                          When I got off gmail, it took about two years before I wasn’t getting anything useful forwarded to my new identity.

                          Setting up forwarding was quite painless and everything went smoothly otherwise. The sooner you start…

                          1. 2

                            When I looked into it, everone was suggesting FastMail if the new service needs longevity and speed. It’s in a Five Eyes country but usually safest to assume they get your stuff anyway if not using high-security software. The E2E services are nice but might not stick around. Ive found availability and message integrity to be more inportant for me than confidentiality.

                            People can always GPG-encrypt a file with a message if they’re worried about confidentiality. Alternatively, ask me to set up another secure medium. Some do.

                        2. 9

                          Wondering where all my free time has vanished. Mostly taking a week of not planning things outside work and seeing what I end up doing.

                          Possible contenders:

                          • Sailing! (If it’s not too cold)
                          • Compression testing / bleeding the Project BMW (If it’s not too rainy)
                          • Home Automation. Mostly can’t be bothered wiring sonoff stuff into mains, as that’s the dangerous bit.
                          • Garage Gym. Needs a bunch of stuff (including a bed) moving out the way so I can actually get to the equipment
                          1. 9

                            I’m trying to write a toy/esoteric scripting language: https://github.com/sevagh/orcscript

                            I have gaps in my CS knowledge and one of those is the whole world of programming language design (lexers, parsers, ASTs, interpreted/compiled, etc.)

                            I’ve been reading through the Dragon book (very) slowly.

                            Many of my projects are rapid-fire one-offs. I feel like it’s been years since I sat down with a textbook and actually learned something new instead of chaining together things I copy/pasted from the internet to achieve a goal.

                            This time I’m forcing myself to be patient and go slow.

                            1. 8

                              I’m working on the long overdue refactoring of my text editor [0] code base. Currently I’m reimplementing underlying data structure [1] of file buffer. I’m prone to over-analyzing.

                              Apropos over-analyzing: After I read the post about BF interpreter in Zig I thought about programming languages. I’m wondering why something like Pascal’s Subranges [4] is not more present in modern programming languages. I like where Wuffs’ [5] is going, but wonder if it would be also a good fit for a general purpose language.

                              I was thinking about a language that could look like something like this:

                              struct Buf {
                                  len int<0:.size> = 0// len is an integer within 0 to .size, by default 0
                                  size int<0:> = 0 // size is an integer within 0 to INT_MAX, by default 0
                                  // data is a pointer to array of chars with write bounds to .size and read bounds to .len
                                  data *[<:.size>]<:.len>char = null // by default null
                              var x Buf
                              x.data = &[28]char // allocate 28 char array
                              print(x.size) // 28
                              print(x.len) // 0
                              //print(x.data[0]) // error
                              x.data[0] = 'a'
                              print(x.len) // 1
                              print(x.data[0]) // a

                              Is the reason for lack of such language features is that it’s prohibitive in cost of compilation? I think that it would be all checked at compile time. When compiler would be unable to prove safe access (initialized data) it would require adding a run-time check like in Wuffs. Bounds could be also added to function parameters.

                              [0] https://github.com/hadrianw/werf

                              [1] https://gist.github.com/hadrianw/4447052496bd019ea4a8eea7fef868af

                              [3] https://lobste.rs/s/vjh6ni/how_zig_do

                              [4] http://wiki.freepascal.org/Subranges

                              [5] https://github.com/google/wuffs/blob/master/doc/wuffs-the-language.md

                              1. 2

                                If I’m understanding correctly, you want to describe what range of data is allowed in a way that’s checked at compile time or a runtime check is automatically generated. Ada does that with range types among many other things. The Clay language adds those features, linear types, and singleton types to a C-like, system language. Modula-2 and Modula-3 had subranges, too. The former was probably fast given it’s a Wirth language originally compiled on a PDP-11/45. Latter tried to avoid bloat in other languages like C++. Aside from Ada and Clay, I can’t remember if others were checked statically or always at runtime. The Design-by-Contract languages can do that property plus more with compile- vs run-time implementation-dependent. Wuffs’ looks like it falls in the DbC category. Thanks for that link.

                                1. 1

                                  Thanks for the links.

                                  I was thinking about Ada lately. But thought that mostly it’s under GPL without linking exception. But it’s not the case: https://news.ycombinator.com/item?id=16588483#16599489

                                  Clay seems dead.

                                  I have to read more on DbC.

                                  Wuffs is quite low level. It does not emit bounds checks, only checks if it can prove that access is safe. Programmer has to add them himself. It may get tedious, but it’s then already easier than in C.

                                  I think that more languages should consider arrays or strings as first class objects. So bounds checks should happen less - not on every access. I know that with generators it’s often the case - the check is only at the beginning. Compilers should also optimize operations on strings/arrays (maybe they are already). For example concatenation like:

                                  foo = bar + baz + qux
                                  foo += str(23)

                                  Should be done as single allocation and copying.

                                  1. 1

                                    Every language is dead when nobody uses it. ;) The language was academic project that got used experimentally by Wittie a bit but otherwise isn’t developed. Doesn’t mean there’s not stuff worth imitating. The Ada language is certainly the best design-wise if you want safety or maintainability all the way. The linked comment confirms last night’s suspicions that GPL version is something they threw together on the side: it’s a pain to install. I got GNAT (compiler not IDE) but not SPARK working so far. Will try again soon.

                                    The Design by Contract started with Meyer’s Eiffel Method in the 1980’s. It’s top contender with Ada given its IDE, test generation from specs, proving of specs, etc. You can embed contracts into other languages in functions or OOP constructors/destructors, through. Here’s an overview of the approach describing benefits. hwayne also did a write-up comparing several languages, including D. If a language has metaprogramming, in theory one could flip a switch on which are compile-time, runtime checks, and/or tests.

                                    Far as compiler optimization, well that’s just mostly about how much work is put into the compiler. Since so much went into C ecosystem, I advise people making new languages to stay compatible with C or even produce C. In this case, the language would have an option to output C to go through a compiler like LLVM that can probably handle that. I have no idea what the various safe languages can do in terms of optimization, though.

                              2. 7

                                A couple weeks ago @wezm posted a great article on his process of leaving Mac behind. Part of his post mentioned a pain point around a budgeting app, and the requirements document that he had written to replace it. I had been thinking of taking on a self-hostable YNAB style budgeting system for a while and his post (plus the groundwork he shared) was the appropriate kick to get things started.

                                I’m off work between jobs this week so will be working on envelope_budget. I’m building against @wezm’s spec in Rust with a goal of a minimal-functional CLI release by the end of this week. I footed out some of the data structures when I got the spec and will be picking up next with serialization, then moving to the CLI binary.

                                1. 4

                                  Have you looked at ledger, hledger, and/or beancount?

                                  1. 2

                                    Yes, and this came up in the thread on Wes’ post here. My first goal is to hit the functional requirements for envelope budgeting, but as I work on serialization I may implement a ledger compatible backend for interoperability with that ecosystem.

                                    The value of this project to me is not just the end result, but the process of building it to keep my Rust use current. There doesn’t seem to be a ledger library for Rust so that could end up being a useful contribution to the community if I go that way for serialization.

                                2. 6

                                  I probably keep refining the libraries of the directories project, which currently consists of a Rust and a Java implementation. I back-ported improvements of the Rust version back to Java and added a lot of documentation to both projects.

                                  The core goal of the project is to help developers pick the right directories for their application-specific data, instead of just dumping things into users’ $HOME directory.

                                  I also received the key caps for my first self-built keyboard last week, so I’m currently waiting for the PCB to start soldering. Picture of the keys and the planned layout.

                                  1. 6

                                    Continuing my productivity system improvements. Last week wasn’t as huge a success as previously, but I maintained the same gains despite several unexpected events which normally would have tanked my productivity. So, still success? :)

                                    This week’s personal activities:

                                    • Move my organizer’s sections around so that it’s closer to the recommended GTD layout.
                                    • Make a weekly planning checklist so that I’m less likely to forget a step
                                    • Follow through on some long overdue family records paperwork.
                                    • Continue refining the family budget with YNAB.

                                    And for occupational activities:

                                    • Learning how to write a proper Jenkinsfile (I mostly work on UI stuff, so this is a little outside my normal)
                                    • Get out of the weeds and do some proper planning of our UI architecture so that we’re ready for upcoming projects.
                                    1. 6

                                      Continuing my work on reversing the old Quake cracking program QCRACK. I have a way forward to completion, basically reversed, just writing my own version in code so I can show that instead of assembly (and to verify to my self that I do understand it right.)

                                      You can see my previous work on it on my site.

                                      1. 6

                                        Personal: Trying to do some OS debugging. My touchscreen’s pen doesn’t work quite right on OpenBSD, and there’s some hardware that I want to get running on 9front. Other than that, smaller bits of Myrddin hacking.

                                        Work: Starting to rewrite the core of our cooking code to move to a new algorithm.

                                        1. 6

                                          I’m continuing to work away at that Lobsters iOS / Android app, and it’s getting to the point where I’d probably feel okay throwing it up on the App Store / Google Play as a free download for others to use. It really has a pretty limited use case though, since as far as I know Lobsters doesn’t have any way for third-party applications to authenticate users, limiting my app to being read-only.

                                          I’ve also been learning Rust with the fantastic official docs, and Ive started porting a half-complete Swift Game Boy emulator I worked on years ago to Rust. It’s definitely taking me a while to wrap my head around lifetimes and borrow semantics, but I’m really enjoying the experience.

                                          1. 1

                                            Re Lobsters login, can you not simulate the regular login process with a library? And then use that session for posting?

                                          2. 6

                                            Working on cache server nuster, adding following features:

                                            • Purge cache by path (curl -X PURGE -H “path: PATH”)
                                            • Purge cache by regex (curl -X PURGE -H “regex: REGEX”)
                                            • Purge cache by host (curl -X PURGE -H “x-host: HOST”)
                                            • And purge by combination of above
                                            1. 5

                                              I’ve been cleaning up guitktk, my simultaneous GUI and GUI toolkit maker, for release. Its one of my larger projects, with a good amount of accumulated, erm, cruft.

                                              Do people tend to read the code for these things? Should I suggest a reading order and what individual files do? I feel the more docs I write, the more stuff can get out of date.

                                              Last week, I recorded some demo videos of guitktk (preview) to try to give an idea of what the intended workflow looks like.

                                              Last week, I also look into a possible native Mac backend but didn’t find anything better than PyObjC which too much like a hack for Python. I also learned that Tkinter doesn’t use anti-aliasing by default and basically need an external drawing library to get that effect.

                                              So I decided to record the videos with the Cairo backend instead.

                                              1. 5

                                                I think I’m going to write a bunch of graphql stuff into our rails code in hopes of simplifying our react front end. We do redux and I’m just sick of all the boilerplate. Hoping graphql plus Apollo means we save a lot more frontend time.

                                                1. 5

                                                  I’m making a concerted effort on pushing out things I’ve been working on, and making them public.

                                                  I’ve started already with Koalephant Shell Script Library, a library for building (mostly ops/admin related) tools in shell, and helpers to simplify build/documentation of said tools. I’ll be continuing work on Koalephant Certificate Manager, a set of tools to simplify use of Certbot with e.g. HAProxy. I’m aiming to make a 1.0 release this week.

                                                  Earlier today (and building on work from last week) I published new builds of our Debian Vagrant boxes, which have finally added support for VMWare Fusion/Workstation.

                                                  For $CLIENT I’m working on the first part of a new reasonably-HA self-managed (i.e. nothing “-as-a-Service”) cluster.

                                                  1. 5

                                                    I’m working on being more relaxed. Learing Toki Pona. Also might play with APL/J and or F# Type providers. I do think an APL/J type provider would be pretty amusing.

                                                    1. 4

                                                      Somewhat related to the backup tool I mentioned earlier, I’m making a website that lets you do provisioning of a backup server from a declarative config and it manages storage space and security updates for you. The basic goal is you can do backups with any software you want, and it abstracts away most of the annoying parts.

                                                      1. 4
                                                        1. I’m working on a personal congressional outreach project based around ProPublica’s Congressional API.
                                                        2. Tweaking my kubenetes cluster.
                                                        1. Finishing up our first major UI overhaul.
                                                        1. 4

                                                          Working on the LLVM backend for the dependently-typed functional language compiler I’m working on, silt.

                                                          It’s super fun, and incredibly challenging as someone who’s unfamiliar with dependent types in general.

                                                          1. 4

                                                            My weekend hack was porting the ISETL SETL interpreter to Mac OS X. My next step is to learn more about curses so that I can get the user interface to display properly.

                                                            1. 1

                                                              That’s really neat! I was collecting info on SETL but can’t recall if I submitted anything to Lobsters. The interest was writing code that closely corresponded to something specified with set theory to reduce errors in abstraction gap between them. For instance, a well-tested or verified SETL interpreter might run something done in Isabelle/ZF or even TLA+.

                                                              I’ve actually not tried it since I gotta relearn the math first. Did you find anything particularly interesting or useful about SETL when playing around with it?

                                                              1. 2

                                                                I haven’t found many things to recommend SETL as a language. It was state of the art in the early 70s but these days there are numerous languages with sets, garbage collection, operator definition, and list/set comprehension. SetlX seems like the most active implementation. NYU used to have all sorts of SETL and SETL2 related software on their ftp site but it seems to have been shut down.

                                                                1. 1

                                                                  That makes sense. Thanks for the SetlX link.

                                                            2. 4

                                                              I’m not sure if this is only about private projects, or also about work related. Please tell me if there are guidelines on this.

                                                              At work I’m working creating a message-queue based load balancer for a 3rd party backend service having an http api which is very problematic to properly load-balance via standard http load balancers. This will achieve optimum capacity use, request prioritization, lower error rates, etc.

                                                              Also I started work on my pet project planned and postponed since a while: an news categorizer, recommender system. Currently work on rss is in progress, but eventually also and bookmarks (read multiple times), read it later (read once) support will come, and also full text search. The rss fetching, parsing, linked item fetching is done, language toolkit for stemming and language detection (if metadata is not available) for Hungarian and English is done, HTML corpus and metadata extraction is being worked on. I expect to have HTML based text-feature-extraction (currently word counts, some metadata from html head) to be completed this week. Then I plan to create some frontend for categorizing, collecting teaching data. And only then will I start working on the ML part, which will be something I have never done so far, and I hope to learn a lot new stuff.

                                                              1. 2

                                                                anything you like is fine.

                                                                1. 2

                                                                  I’m not sure if this is only about private projects, or also about work related. Please tell me if there are guidelines on this.

                                                                  People post anything. They mostly post personal or work projects. It’s used for getting to know what folks like/do, motivation/inspiration, tracking progress, and so on. That said, I mostly upvote the stuff that at least mentions something specific, tech or idea, that others can learn from or use somehow. There’s usually a lot of that in these threads. Yours is a good example since folks can learn a bit from it. :)

                                                                2. 4

                                                                  I am struggling to find the time and energy to work on the things I want to work on (personal projects), because the things I have to work on (jobby job) are taking up too much of my time and energy. The week is full of activities. I’m hoping next week will be a bit better. :/

                                                                  1. 2

                                                                    I regularly go through cycles of this too. Don’t forget to set aside some time to just space out looking out a window and/or go for a walk.

                                                                  2. 4

                                                                    I am messing with a GPS U-blox. The idea is to create a data logger able to upload to internet (via ESP8266). Interestingly, my main issue for development is almanac&ephemerics data for GPS, Galileo, Glonass and Beidou. U-blox has AssistNow service but they ignore my registration request :-). Do you know about any similar online service?. I can not pay. Not in money :-). Any suggestion?


                                                                    1. 4

                                                                      We’re doing a lot of plumbing for a Magento 2 instance to work with our production facility whilst our UX guy works on our new designs.

                                                                      I also have to do some post on a comedy show I recorded a month ago. Probably going to finish my Fleetwood Mac remix and start some more tracks that wont get finished.

                                                                      1. 2

                                                                        instance to work with our production facility whilst our UX guy works on our new designs.

                                                                        How’s Magento 2? I used to be a Magento 1 developer but have moved on once they announced they no longer support it.

                                                                        1. 3

                                                                          Mage 2 is a hefty beast. All of the core functionality of 1 is there, but written in much more modern ways. They introduce a lot of new stuff too. I’m in a team of two and we spend a lot of our time deep diving the documentation (which is also a massive improvement over 1) just to figure out small things like how the front end development works. I like the platform a lot but its massive. A lot to learn.

                                                                          1. 2

                                                                            What are some differences/problems on the backend that you’ve faced when trying to get it running in production? We breifly worked on Mage 2 when it came out. I was surprised by the DI, interface, factory structure of the modules. Also the fact that they replaced module registration from XML to PHP for a performance boost.

                                                                            1. 2

                                                                              We’re still months away from Mage2 in production, but our stack is almost identical to how we have Mage1 set up so I don’t fear that will be an issue. I look at training our marketing and customer service teams on mage2 as something that will be a problem to face when we get to that point.

                                                                              They also didn’t replace module registration - you still have to declare your module and version in an XML file. It makes the registration.php file a bit confusion, but all that does is register your namespace with the autoloader.

                                                                              The way Magento 2 has approached DI is incredible I think. I don’t mind running a compile script on the sole fact that I just declare an interface for my injection and boom, it takes care of finding the implementation when the time comes to instantiate the object.

                                                                              All in all, the more work I do on Mage2 the more I appreciate the efforts by their team.

                                                                      2. 4

                                                                        Fixing up my sql tutorial so it worked better on mobile and adding a few more questions. http://www.windowfunctions.com/

                                                                        1. 3

                                                                          VP of Engineering at a small startup is a “how many hats are you wearing job”.

                                                                          This week at Wallaroo Labs, I’m wearing my “you aren’t writing any code” hat. IE, this week is more of a traditional VP of Engineering week. I’m doing strategic and tatical planning for the features and work that we’ll be doing for Wallaroo over the next few months, meeting with possible clients, and working on a couple job descriptions.

                                                                          1. 2

                                                                            I noticed my bit-fiddling skills have deteriorated as I am mostly doing high-level things for many years (or let’s say, higher level than plucking individual bits out of a byte stream), so I started implementing an ASCII85 encoder/decoder: https://gist.github.com/winks/35492a4de4ca9cad6777919de223c427 (after first reading about mp3 decoders and giving up for now, prompted by this post: http://blog.bjrn.se/2008/10/lets-build-mp3-decoder.html )