1. 14

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

Be descriptive, and don’t hesitate to ask for help!

  1.  

  2. 7

    Mostly continuing work on my MPD client and shell directory navigator. Today I’ve fixed Slack a bit more in my IRC client since seeing :slightly_smiling_face: all over was pretty annoying.

    As for plans… the navigator needs more work to be actually useful, and then I want to create a system daemon to renice/reionice and oom_score_adj X11, i3wm and compton to a lower priority as soon as it sees them, in hope that I get a tiny bit more responsive system when everything goes to shit. I’d also like to reverse engineer w3mimgdisplay if there’s any time left and potentially reuse the concept in the navigator as well.

    1. 4

      Work’s the usual, building a thing to connect one thing to another thing. Lots of Ruby involved. I’m not sure how anyone actually explains work stuff without writing like 10k words to explain what all of their systems are, what they do, and why.

      I will say though that we use SumoLogic logging there for everything, and I’ve really come to appreciate how useful it is to have all of the logs from all of our services (we’re big on SOA) searchable quickly in one place with a pretty sophisticated processing capability. Last place I worked logged to a table on the main DB. And of course there wasn’t a read replica or anything, so the log table gets huge fast and is hard to query well in production without essentially DOSing our main production DB.

      On personal projects, I’ve been working on a script to pull all of my comments from various boards I’ve posted to into a local SQLite database. Kinda handy if you seem to remember writing about something somewhere, but can’t remember where and when. Supports HackerNews and Reddit so far. I have found Reddit integration to be a bit finicky, but it seems to be a good API once you get it figured out. I’d like to do Lobsters here too - seems we don’t have an API here, but I’m not above a little web scraping.

      I’ve also been thinking of setting up my own instance of Lobsters for a group I’m associated with that seems to be in need of a discussion forum. Anyone have any experience with traffic vs server load?

      Still have some ambitions to spruce up my DailyNotes site enough that other people might actually want to use it.

      I’ve been doing a decent amount of my tinkering on Windows Subsystem for Linux, and found it pretty handy so far. It feels like the best of both worlds - you get all of the Linux tools on the command line, and a full Windows environment for GUI, with no VM overhead. Only a few hiccups that I’ve found:

      • I like Control-Space for tmux commands, but Windows consoles don’t seem to like forwarding that.
      • Both the ordinary Windows directories and a “special” linux directory tree are accessible. However, you have to put files in the Windows directories, or else you can’t see them with Windows tools at all, but then permissions and such tend to get screwed up
      • The Linux env does have a SSH server, but you seem to need to reboot it every time the system reboots.
      1. 4

        I’ve put some time into PISC over the weekend, and I plan to have a GopherJS based online playground for PISC in the near future, and if that goes well, an interactive tutorial for it.

        1. 4

          Home game stuff:

          The 8bit heightmap has finally been upgraded to 16bit and it looks much nicer than before. Tracking down all the collision detection bugs was quite annoying. It also blew the download size up from 20MB to 120MB, so I’ve been doing some work on bringing that down again.

          The biggest savings came from computing normal maps at runtime, cutting off about 50MB. I still save the normals at tile borders, and the code to load and save them is fragile and I don’t like it. I’ve been thinking of doing something like:

              void pack( v3 * packed, const v3 * orig ) { *packed = *orig; }
              void unpack( const v3 * packed, v3 * orig ) { *orig = *packed; }
          
              template< typename F >
              void pack_normalmap_border( array< v3 > border, array2d< v3 > normals, F f ) {
                      size_t n = 0;
                      // pack top row
                      for( size_t x = 0; x < normals.w; x++ ) {
                              f( &normals( x, 0 ), &border[ n ] );
                              n++;
                      }
                      // pack bottom row
                      for( size_t x = 0; x < normals.w; x++ ) {
                              f( &normals( x, normals.h - 1 ), &border[ n ] );
                              n++;
                      }
                      // pack left/right columns...
              }
              // pack with: pack_normalmap_border( border, normals, pack );
              // and unpack with: pack_normalmap_border( border, normals, unpack );
          

          which is more DRY than what I have now but I’m not totally convinced it’s a win.

          Next on the chopping board are my horizon maps. Storing the data needed to compute them at runtime would be a bit of a pain and quick testing shows PNG compresses them very well (34MB to 6MB) so I’ll probably just do that. After that I want the game updater to be able to update itself, and then I can push a new release, which will include a Linux client for the time.

          Work:

          Not happy. It’s upsetting to look back at how little I’ve learned, especially compared with how much I could have learned if I just spent the last 10 months studying, doubly especially since I quit a much better paying job and moved countries because I thought I could find more interesting work here. This seems to happen to me at every job, so I wonder if I’m just doing it wrong?

          I’m considering moving into contracting. My reasoning being 1. I guess I don’t actually like programming very much so I would like the variety and arbitrary amounts of time off and 2. I want to be able to say no to projects that don’t interest me which you can’t do while employed regularly. My biggest worries are that I have no idea where to start, and that nobody will want to pay for the things I’m good at (computer graphics and optimisation). If anyone has any advice on this I’m all ears!

          1. 2

            I’ve been following @sehurlburt who set up bionomial which is a company making a texture compression product - hopefully her story on starting a software business can help you make that leap to a better job…

          2. 4

            Still banging away on Hammer, a pluggable rate-limiter for Elixir.

            Progress has been slow (we’ve got a newborn in the house), but I’ve got it to the point where it has fully-working backends for both Redis and ETS, so I just need to polish up the API and write some unit-tests before uploading it to hex.

            I’ve learned a lot about Elixir, and particularly about OTP in the process of making Hammer, so I think I’m fine with the slow pace of development.

            1. 3

              Just started reworking/refactoring Senseye after a long hiatus, so with some luck it might actually get a UI that doesn’t suck.

              1. [Comment removed by author]

                1. 2

                  Interesting idea! I hope you share your results.

                2. 3

                  $work: planning the migration of services from CentOS 6.9 servers to 7.1

                  $not-work: building my hidiot that turned up in the post over the weekend.

                  1. 3

                    CentOS 6.x to 7.x doesn’t look like any fun! Glad that AWS Linux is based on 6.x ;-)

                  2. 3

                    Finally getting around to doing a swing migration of a couple terabytes of data. It’s been living on an old NTFS drive, so I’m swinging it over to a new hard drive. I’ll reformat the NTFS drive and bring the data back over (I want the new drive for something else because it’s bigger).

                    I’m running Arch Linux and was hoping I could format both the drives with ZFS, but it’s not supported with my current kernel :( EXT4 it is

                    1. 2

                      Which kernel are you running? The zfs-dkms package in AUR might suit your needs.

                      1. 1

                        Second: I use zfs-dkms-git, spl-dkms-git, spl-utils-git and zfs-utils-git on four kernels. The only caveat is that pacmanʼs DKMS trigger doesnʼt always try to build spl and zfs in the right order, so itʼs important to check that one doesnʼt need to do sudo dkms install zfs/0.7.0 -k 4.… by hand.

                        1. 2

                          I’ve been using the standard kernel that ships with Arch. At this time, it’s 4.11.7. I remember hearing about those DKMS packages (I think from the Arch wiki for ZFS?) so I may have to give that a shot

                    2. 3

                      Bought a secondhand 12.9” iPad Pro last week and sold my personal 13” Macbook Pro. Continuing to work out how to use the thing to do things I’d otherwise have done on the laptop. So far it seems like there’s an equal amount of things that are easier vs things that are more difficult. (This isn’t a standalone device, home server is being leaned on for things too. Hence why it’s possible.) So far I’m still happy, regret hasn’t set in … yet? ?

                      Main job this week on the personal tech is sorting out the pictures of surplus kit I shot at the weekend and putting it all up on fleabay. No point in having it sat around when the monies could be spent on other projects. Such a ballache to do though.

                      Also wrenched a bit on the ProjectBMW replacing the crankcase cover gaskets, only snapped one bolt (which of course is rare & therefore a £20 replacement. Fuck sake Caius.) Decided for sure I’m keeping it & working on it over the winter to get her in a position I can enjoy her properly next year and then decide whether to keep or sell on. Having a mechanical project is just too darn lovely to give up just yet. (She has overheating issues. Going to fit a MASSIVE electric fan to solve that.) This week is keeping an eye out for parts on fleabay and lining them up to do the work later.

                      1. 3

                        This sounds interesting to me re: Macbook -> iPad.

                        I sometimes read http://www.macstories.net, Federico Viticci there is very strong proponent of iPad for work, but his work-flow doesn’t resemble anything similar to mine.

                        Are you sharing more of your thoughts around this move that I could read somewhere like a blog ?

                        cheers!

                        1. 3

                          I’m intending on it, simply because a couple of people at work have been asking as well. I found Matt Gemmell’s series on going iPad only more useful than Federico’s, simply because it covers things like blogging with a static site generator & touching on webdesign/doing stuff via a server.

                          Also trying to convince a friend of mine to finish up his blog post on coding with an iPad Pro, as he’s had one for a couple of years and loves it still.

                          If/when I do post anything, it’ll be at http://caiustheory.com/ though.

                          1. 1

                            Many thanks! You already gave me a lot to read :-)

                      2. 3

                        First day at the new job today. Hopefully some Mesos/Scala work this week.

                        1. 3

                          I’m working on a Nim wrapper for libxml2, heavily inspired by lxml.

                          1. 2

                            Working on a requestb.in-like service for the trampoline.io domain name I purchased years ago (yay for finally putting it to use!) as part of the Java training course I’m working on, both as an example of a deployed Java Spring service and to help students (new college grads) get a deeper understanding of what’s happening underneath the web browser (i.e., HTTP).

                            Slowly working on my online “Modern” Java training course, but fear that the kind of online class that I want to run will require a custom-made site (to allow to more interaction, discussion, and code review), so trying not to dive into that right now in order to get the first class out in September.

                            1. 2

                              I’m working on a Noise Function Composition Application using Rust and WebAssembly. It’s built on top of the noise-rs, and the ideas is for it to provide a nice web-based GUI to build complex and dynamic noise functions.

                              The hope is to use it along with a small simulation library that I’m working on to build cool visualizations and generative art kinds of stuff.

                              1. 2

                                I’m about to start work on a long-overdue redesign of all my websites. Throughout the weekend I’ve been working on a Jekyll theme that will become the base of the whole redesign, and the inspiration of the whole design came from this post.

                                1. 1

                                  Getting my teeth into a new React Native app project for a client. Using Redux, redux-saga and some custom FSM reducers to manage all the network activity for the backend, and to keep as much of that as possible hidden behind a module API that my UI-building co-dev can use without having to know too much about’s what going on, apart from just asking for data and handling the state-change messages. The redux/saga/FSM combo is starting to come together enough to make it feel like a decent way to manage state properly - even if it takes a lot of code to do it.

                                  1. 1

                                    Do you know what the state of interfacing to hardware is for React Native? Last I looked (and checking again now), it was rather limited in terms of getting data from accelerometer, barometer, Bluetooth beacons etc. Is the idea that this kind of stuff should be done in native code on each platform?

                                    1. 2

                                      Yes generally that’s the approach - it’s pretty straightforward to expose native code and I guess the RN team don’t think of these as ‘core’ enough to have made it (or have enough resource to have integrated it) into the platform itself. Generally speaking they seem happy to rely on ‘community’ modules for things like that, even to the extent of navigation and maps. As with a lot of npm stuff it’s simultaneously a strength and a weakness - there are frequently modules already developed for things you want to do, but often it’s hard to tell which is best (or even good) without digging quite deeply into it. For example, I found a sensor library that only does accelerometer and gyroscope, contra this one which handles many more sensors but is Android only, and another which does BLE. npm modules also often very specific slices of functionality, so what I’ve found in RN so far is that with some digging and experimenting, I can usually get what I want by gluing together a few modules.

                                      1. 1

                                        Thanks, that’s good to know. Apparently some people have built bridges for Cordova plugins as well, here is one: https://github.com/axemclion/react-native-cordova-plugin. I suspect that’s going to be brittle though.

                                  2. 1

                                    Working on some blogging software mostly, quite enjoying it. Perhaps starting my first proper piece of contract work as well!