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?

9 comments

  1. skybrian
    (edited )
    Link
    I’m working on a personal blogging / link sharing / web forum web site that has a lot of Tildes influence, but I intend to take it in a different direction. I’m calling it Keeper and it will be...

    I’m working on a personal blogging / link sharing / web forum web site that has a lot of Tildes influence, but I intend to take it in a different direction. I’m calling it Keeper and it will be open source. Some of the ideas I’m considering:

    • Easy to install. It will be a Deno app that you can set up on Deno Deploy and run for free, under their free tier. (It also runs locally, and I believe it would also be easy to package up with Docker, but I’m not likely to implement that myself.)

    • Some support for federation. This will largely be old-school federation like blogging. Everyone can have their own website, and we can link to each other. But people expect better support for conversations nowadays, so there will be social features:

    • Logins and usernames will come from GitHub. It’s a central point of failure, but I’m hoping it’s good enough. GitHub seems like a fairly neutral, mature, reliable login provider that’s unlikely to care much what happens on Keeper websites. A big advantage for federation is that everyone can have the same username on all Keeper websites. Creating a GitHub login seems pretty easy, and this avoids implementing storing passwords and account recovery. Github has lots of ways to log in (including things like passkeys) and an account switcher, which allows for having alternative logins for people who want to preserve their privacy.

    • Some kind of support for cross-site notification. If you post to someone else’s Keeper and someone replies or mentions you, how do you get notified? I’m thinking some kind of webhook that forwards notifications to your own Keeper, or alternatively an RSS feed. (The old school way would be to send an email, but I’m hoping to avoid that. I don’t want people’s email addresses.)

    • Topics are top-level. There won’t be groups (use tags), and links will be special posts that go inside topics. People can post different links for the same news event and voting can be used to rank them. To avoid many quibbles over clickbait headlines, my convention will be to name topics as if they were a Wikipedia article.

    • Topics reflect the interests of the Keeper admin. This is what makes it a personal website, like a blog, rather than a common discussion forum. Create topics about things that you want to discuss on your own Keeper, and they can create topics on theirs. (Though, you could create open threads like bloggers do.)

    • More collaboration in the style of git and wikis. Many things can be added to or edited, though your edits might not be accepted. If you see a typo in someone else’s post, you can send them an edit that they can easily apply if they wish. There will be an automatic way of crediting contributors.

    • Limited support for contributions from strangers. Anyone with a GitHub account can log in, but by default, they won’t be able to make any public changes or bother other users. Their contributions go to a “slush pile” and you can do with them what you wish. (There will probably need to be spam filters eventually.) Invited guests can post publicly, and people can be given “guest host” privilege, which lets them create new topics. (I expect that to be very limited, though, to keep the site focused on personal interests.)

    • The Keeper admin will likely have other special privileges like posting images. (This is another incentive to set up your own Keeper website.)

    11 votes
  2. [2]
    M1TE5H
    Link
    Computational Science, Game Development, and Machine Learning Modern C++20/23 research software to model microstructure, simulate defect interactions and the evolution of defect networks, and...

    Computational Science, Game Development, and Machine Learning

    Modern C++20/23 research software to model microstructure, simulate defect interactions and the evolution of defect networks, and explore mesoscale informatics by leveraging data-oriented design. If done well, the same code scaffold could be applied to various problems across materials (metals, semiconductors, ceramics, polymers, composites, etc.), biology and nanotechnology.

    For the Computer Scientists and Engineers here, it is a fascinating problem and the basic premise is as follows. Consider a tessellation in which each cell is hosting its own N-body “game loop” — “Barnes-Hut-Voronoi”— it seems deceptively achievable but there are some notable caveats:

    • Complexity. The bodies represent individual defects, but defects come in many varieties, each with their own rules: some are mobile and some are stationary; some can create and/or destroy others; some can merge to become different objects; and some remain in their respective cells whereas others can cross between compatible neighbouring cells; etc. Useful analogies can be made to the Entity-Component-System setup so some further investigation is needed.
    • Heterogeneity. Each cell can be thought of as a homogeneous “microcosm” (i.e. an isolated subregion that is straightforward to deal with on a standalone basis) but it is the overall aggregate of hundreds/thousands/millions of cells (and the defects therein) which is of great academic and industrial relevance. So opportunities for parallelism and/or concurrency are plenty.
    • Anisotropy. Underlying atomic structure can govern directional preferences, which — when coupled with the aforementioned heterogeneity — brings computational geometry into the fold, but in a manner that is unlike the isotropic worlds of the video games.
    • Non-Linearity. Actual (classical, relativistic, quantum and statistical) mechanics are needed as opposed to the approximations used in game engines. However, the program does not need to be burdened with slow (linear algebra-based) numerical solvers; some crucial physical insight paired with clever mathematical techniques could make the dynamics comparable to those of games.
    • Scales. One aim is to generate visualisations of the simulations as micrographs that convey information pertaining to lengths/distances/sizes in the O([1nm,1mm]) range. In short, there is also a neat graphic design aspect to this project.
    • Dimensionality. The discussion so far has centred on a two-dimensional representation but the real world has three spatial dimensions. And there is also the time dimension to contend with, especially when processes occur at rates differing by orders of magnitudes but still influence each other.
    • Performance. For a given set of input parameters, each execution with a random initialisation will culminate in one possible realisation (read: final configuration) and the randomness needs to be averaged out over multiple realisations — strangely reminiscent of this ML/AI experiment. For most end-users, parameter space sampling will be conducted on a local workstation (i.e. no HPC) and hence the need for a careful selection of the lowest-lying data structures and perhaps some upfront optimisations.

    Over the past decade, the main challenge has been to establish a tractable framework that balances algorithmic complexity and physical complexity. That is, a computational framework that scales reasonably with the microstructural features (e.g. numbers of cells and densities of defects) and events (i.e. interactions) whilst also retaining the essential science and customisation points for generalisation.

    After having published some of the groundwork, the next step is to do some serious prototyping, and periodically post updates for suggestions and feedback.

    7 votes
    1. skybrian
      Link Parent
      Sounds complex. I hope you have a good team to work with?

      Sounds complex. I hope you have a good team to work with?

      3 votes
  3. [2]
    Comment deleted by author
    Link
    1. tauon
      Link Parent
      As someone who is also a pretty beginner-level programmer, but has completed a few simpler projects, I feel like this too quite often. However usually, I can ease my mind with a line of reasoning...

      It makes me worry, though, that I'll lose all of the concepts that I learned before this and haven't put into practice yet.

      As someone who is also a pretty beginner-level programmer, but has completed a few simpler projects, I feel like this too quite often.

      However usually, I can ease my mind with a line of reasoning that goes something like this: Once I've initially understood, learned and really tried to grasp a concept, even if I do forget it later, I can always revisit the topic (should I ever need it again in the first place…), and most often, I will start to remember the important/difficult bits again pretty quickly. It's typically just so much easier the second time around, even if you feel like you know nothing anymore when you start revisiting it the second (or third, or later) time around. Same holds for closely related topics, or (nearly) the same topic in a different framework/language/setting.

      It is a bit like learning to ride a bike, perhaps.

      3 votes
  4. [2]
    hellojavalad
    Link
    We use Filemaker at my workplace; we deal with many large organizations in processing their mail. Filemaker (whose company is an Apple subsidiary) is great for throwing together a solid interface...

    We use Filemaker at my workplace; we deal with many large organizations in processing their mail. Filemaker (whose company is an Apple subsidiary) is great for throwing together a solid interface quickly, but is not very high performing. Currently we upload records to a SQL database for one piece of software and into Filemaker and when talking about loadings millions of records at once it is a couple minutes onto the SQL server vs several HOURS in Filemaker. This also locks that PC's instance of Filemaker the entire time, to the point where the user that does this uses up to three PCs (their PC, a VM, and a third PC that is currently unused by anyone) at a time and they are still falling behind on keeping these records up to date.

    I'm probably the most technical person at the place I work so I've slowly been setting up ODBC connections between Filemaker and said SQL Server so we largely only load files in one place. These databases are easily 15-20 years old (Back before Filemaker supported more than one table in each application, meaning each table had to be it's own .fmp file) from when this was something used to support the single in-house client. Which has now expanded to 150+.

    Anyways, while this cuts down on uploading files the performance is pretty subpar when looking through these records. Luckily Filemaker doesn't need to actually hit these records frequently, just occasionally and in small quantities. Now i'm just disentangling the stuff that uses the Filemaker records and pointing them one at a time to the SQL Server.

    We really shouldn't be using Filemaker for what we are doing, but a) we don't have people with the technical knowledge to change (everyone is basically self-taught) b) they offer very low salary and don't look for people with the technical knowledge because they do not want to pay the price.

    5 votes
    1. devilized
      Link Parent
      Wow, haven't heard of that product in a long time. A public school district I worked for almost 20 years ago used it and it was a nightmare. I'm curious how much it's changed (but not curious...

      Wow, haven't heard of that product in a long time. A public school district I worked for almost 20 years ago used it and it was a nightmare. I'm curious how much it's changed (but not curious enough to set it up).

      5 votes
  5. unkz
    Link
    I’m doing some pretty silly stuff with a raspberry pi in order to automate playing some silly iPad games by attaching to the iPad as both a screen mirroring host as well as as a Bluetooth mouse.

    I’m doing some pretty silly stuff with a raspberry pi in order to automate playing some silly iPad games by attaching to the iPad as both a screen mirroring host as well as as a Bluetooth mouse.

    3 votes
  6. devalexwhite
    Link
    Took some time yesterday to throw together a markdown based blogging platform. Wanted to build something super simplistic, basically just drop in a markdown file, create an account and it's...

    Took some time yesterday to throw together a markdown based blogging platform. Wanted to build something super simplistic, basically just drop in a markdown file, create an account and it's posted. Felt like blogging should be as minimalist as markdown itself is.

    It was also an opportunity to play around with Supabase, which I'm liking a lot so far. Paired with NextJS and TailwindCSS, it was relatively easy to throw the project together.

    The project is open-source and you can play around with it at mdJournal.

    2 votes
  7. chopin
    Link
    I've been working on an open source self-help web app for the past 5 months. I need to do a few more things before I publish it: Figure out whether to use a logging service or just save everything...

    I've been working on an open source self-help web app for the past 5 months. I need to do a few more things before I publish it:

    • Figure out whether to use a logging service or just save everything to log files and back them up to S3
    • Figure out whether to use something like captcha to protect the signup and forgot password pages, which would hurt privacy and accessibility or leave them unprotected and risk my transactional email service blocking my account because some malicious actors may spam those
    • Tidy up the GitHub repo to make contributing a smooth experience
    • Add a quick demo on the website for the main tool
    • Get feedback from some friends

    I'm new to coding and it's been a hell of a journey so far. I can't WAIT to publish it here on Tildes within the next few weeks!

    1 vote