11 votes

What programming/technical projects have you been working on?

This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

14 comments

  1. [3]
    xxzozaxx
    Link
    Actually this my first time dealing with real world code, I want to improve my dially pdf reader called Zathura, I want to add highlighting feature, and want to improve the searching algorithm as...

    Actually this my first time dealing with real world code, I want to improve my dially pdf reader called Zathura, I want to add highlighting feature, and want to improve the searching algorithm as it take too much time & RAM.

    any advice about reading real world code, contribution & || anything else. I'll be thankful

    6 votes
    1. [2]
      9000
      Link Parent
      My advice is start with something small. Even if the change isn't something you actually care about, find a part of the codebase that you can understand. For instance, change the way something is...

      My advice is start with something small. Even if the change isn't something you actually care about, find a part of the codebase that you can understand. For instance, change the way something is shown to the user, even if it looks worse. Or intentionally break something in a way that you can predict. Or change the color of something.

      This is important, because a lot of programming is about having a mental model of the program in your head, so that you know what to change or where bugs probably are. To build this mental model, it's best to start small and build out from there. Tweak a small part of the code you understand, then extend out to understand more of the code, then repeat. As you go on, you'll also pick up parts of this project's coding and development style, which will help you be more productive as you go along.

      The highlighting feature might be a big refactor, but I imagine that improving search time might be a smaller task (though, depending on the complexity of the project, this very well might not be true).

      Anyway, good luck!

      8 votes
      1. xxzozaxx
        Link Parent
        Thanks so much for advice. defiantly I'm gonna take it and apply it. so I'm gonna start with search task.. again, thanks so much

        Thanks so much for advice. defiantly I'm gonna take it and apply it. so I'm gonna start with search task..

        again, thanks so much

        1 vote
  2. [4]
    crdpa
    Link
    I asked here what language should i start to learn programming and decided to learn Go. I'm doing a music player. I was able to make it list the flac files of the current directory, display the...

    I asked here what language should i start to learn programming and decided to learn Go.

    I'm doing a music player.

    I was able to make it list the flac files of the current directory, display the tags "Artist - Song" in the terminal and play one after another, but with no feedback whatsoever. Just show the tags of everything and play one after the other. For now this is the only thing it does. I started implementing a simple TUI interface (i'm a little lost here) and will start working on changing to previous and next songs.

    It's been challenging, but i'll slowly get there i think.

    The intention for now is to use this with a file manager like ranger, nnn or similar. Since i only have full albums and it's all well organized in <artist>/<year> - <albumtitle> folders, i want to use the file manager as my library/navigation and launch the player inside the album folder i want to listen. It will open the TUI in the same terminal and show the track tags and i'll be able to control it there.

    6 votes
    1. unknown user
      Link Parent
      That's already a big thing: that it works. All you're left to do now is tweak the basics repeatedly until you have a player you're proud of.

      Just show the tags of everything and play one after the other. For now this is the only thing it does.

      That's already a big thing: that it works. All you're left to do now is tweak the basics repeatedly until you have a player you're proud of.

      4 votes
    2. [2]
      ruspaceni
      Link Parent
      I love me some Go, even though I'm rusty as all hell and produce nothing but steaming bowls of spaghetti. I lost the project when my old laptop died, but I also made a little terminal music...

      I love me some Go, even though I'm rusty as all hell and produce nothing but steaming bowls of spaghetti.

      I lost the project when my old laptop died, but I also made a little terminal music player. Mine was more an audiobook player though. I wanted to be able to flick between a few different books without losing my place but some would be in huge 45m chunks with many chapters, and i'd always forget the mm:ss mark.

      bish bash bosh and i had a quick and dirty audiobook manager that suited me. I got lazy and wound up using https://github.com/JoelOtter/termloop for an awful lot of the heavy lifting, if i'm honest. Most of my effort was spent trying to get the ui looking neat while also have info at a glance.

      2 votes
      1. crdpa
        Link Parent
        I'm trying to keep the dependencies at bay, but i know what you mean. Now i understand why there is always job for developers. Shit is pretty hard.

        I'm trying to keep the dependencies at bay, but i know what you mean.

        Now i understand why there is always job for developers. Shit is pretty hard.

        2 votes
  3. pseudolobster
    Link
    I recently bought a cheapo aliexpress brake light / turn signal light for my scooter - basically an electric honda ruckus. The light is a LED strip with amber and red LEDs, and it does the cool...

    I recently bought a cheapo aliexpress brake light / turn signal light for my scooter - basically an electric honda ruckus. The light is a LED strip with amber and red LEDs, and it does the cool "flow" animation for the turn signals. It works, and is bright, and seems to be waterproof enough, but it has a few issues. The most glaring of which is it uses separate inputs for each of its functions, and no two can work at the same time. So that means if I have my turn signals on and I hit the brakes, the red LEDs do not light because the turn signal animation is running. Or another example, I can't have the dim brake lamp for when my headlights are on, then have it go bright when I hit the brakes.

    So, I've been putting off installing it on my bike ever since I got it, but recently I've been motivated to try and reverse engineer it. I looked up the datasheet (PDF) for the driver chip it uses and managed to program an arduino with the FastLED library to talk to it. I managed to find another chip supported by FastLED with similar timings, to the point where I got it to light up, but I still can't make any sense of how it's multiplexing things. Sending each colour to each LED in sequence, led[1] R(255), G(255), B(255), led[2] R(255)... lights up segments of the strip in no discernible order. It seems like each RGB chip is controlling 18 LEDs, which go amber, red, amber, red. The minimum LEDs lit up seems to be 3, so each RGB channel is controlling 6 sets of LEDs. I'm sorta stumped here.

    I think my best idea of how to proceed so far is to attach a LCD or OLED to the arduino and have it output what it's doing, then film the whole thing and transcribe the results to a spreadsheet or something so I can try to make heads or tails of the pattern.

    If anyone has any ideas, let me know. Otherwise, thanks for being my rubber duck, tildes!

    5 votes
  4. dblohm7
    Link
    I started planning out my current project, which is bringing multiprocess browsing to GeckoView and on to Firefox Preview on Android.

    I started planning out my current project, which is bringing multiprocess browsing to GeckoView and on to Firefox Preview on Android.

    3 votes
  5. Dobbie03
    Link
    Working with my partner in crime on my Linux distro, ArchLabs Linux. www.archlabslinux.com Recently put out a release.

    Working with my partner in crime on my Linux distro, ArchLabs Linux.

    www.archlabslinux.com

    Recently put out a release.

    2 votes
  6. frumious
    Link
    This morning, understanding boost::icl (interval trees).

    This morning, understanding boost::icl (interval trees).

  7. StellarTabi
    Link
    No current project, but I'm desperate to find something to write in crystal.

    No current project, but I'm desperate to find something to write in crystal.

  8. ubergeek
    Link
    Just finished up a bash script that generates a Tilde Description Protocol file, which is a json blob that describes a tilde shell server. (Not related to tildes.net)

    Just finished up a bash script that generates a Tilde Description Protocol file, which is a json blob that describes a tilde shell server. (Not related to tildes.net)

  9. Apos
    Link
    I'm currently working on the UI library for my game: https://github.com/Apostolique/Apos.Gui Looking to rewrite how inputs are consumed. Right now, components can do stuff by associating a...

    I'm currently working on the UI library for my game: https://github.com/Apostolique/Apos.Gui

    Looking to rewrite how inputs are consumed. Right now, components can do stuff by associating a "Condition" to an "Action".

    A condition could be the press of a keyboard button such as "Space" and an action could be the toggling of the background color.

    Right now, when a condition is triggered and the action consumed, the input mechanism stops for that frame for every component. Instead, I want to keep going, but not consume conditions that have already triggered. For example, if a couple components have Space as a condition, only let the first one get triggered. If at the same time Enter is pressed, that can also get triggered without any conflicts.

    To solve that, I'm thinking of using a token that I can bind to a [condition / action]. When they trigger, other conditions with the same token won't trigger.

    I wrote a separate library for handling inputs: https://github.com/Apostolique/Apos.Input
    Most likely that's where I need to implement the token.