It's mostly a toy but it has given me great insight into local weather patterns.
It's mostly a toy but it has given me great insight into local weather patterns.
It mainly consists of a simple CLI utility that generates TOTP codes using an AES encrypted lookup table of secrets.
I piggybacked access to this off an unrelated web site and it is now readily available from any device if you can provide the decrypt and lookup key and know the URL.
Pretty simple, but saves lots of time and I don't have to worry about the air conditioner turning off in the middle of the night due to it's internal reservoir becoming full.
- an Unolingo solver that we used to figure out if there could ever by more than one solution to the puzzle (there can be!)
- a "killer" solitaire simulator that determined the optimal number of players for a max win rate. IDK if this is even a real game, but my family plays multi-player competitive solitaire with up to 8 people at a time. IIRC the optimal number for win rates is like 5-6(?) according to my simulation
Also many years back when I was traveling all the time I created a thing based off the what 3 words data where I could geo drop messages at a location. My friends and I used it for a while but then just forgot about it.
https://github.com/shi-yan/broca
on each of the computers I use, I have a open sublime text tab documenting words I don't know.
they are scattering around, unorganized, get lost when the file tab is closed.
I want to synchronize my vocabulary on different devices using git.
broca saves to plain files that are git friendly. And using ChatGPT as a dictionary allows me to search for idioms/slang/phases with unlimited example sentences.
https://arxiv.org/abs/cs/0312018
I was always asking "Why is RSS failing? Why do failing RSS readers keep using the same failing interface that keeps failing?" and thought that text classification was ready in 2004 for content-based recommendation, then I wrote
https://ontology2.com/essays/ClassifyingHackerNewsArticles/
a few years ago, after Twitter went south I felt like I had to do something, so I did. Even though my old logistic regression classifier works well, I have one based on MiniLM that outperforms it, and the same embedding makes short work of classification be it "cluster together articles about Ukraine, sports, deep learning, etc." over the last four months or "cluster together the four articles written about the same event in the last four days".
I am looking towards applying it to: images, sorting 5000+ search results on a topic, workflow systems (would this article be interesting to my wife, my son, hacker news?), and commercially interesting problems (is this person a good sales prospect?)
https://github.com/jleclanche/fireplace
It was used and referenced by a few scientific papers and phds since. It’s my little pride, even though it would really need a rewrite at this point to work properly with all the additions in the game.
It contains its own little python driven dsl for actions. I could talk about it for hours. All that work led to me starting a company around hearthstone (I have since left it behind but it eventually grew into other games).
This way I can fall asleep to noise that doesn't later wake me up.
Most fun part was transcribing 70+ year old NOAA tide calculation mathematic/astronomic/hydrologic research papers into modern TypeScript. Approach is semi-documented here: https://github.com/JacksonKearl/solunar
A webapp for sharing files/text between two devices no matter the platform. Use this all the time. No more sending emails, Facebook message, dropbox link to yourself.
I wanted to have a scripting language that was inspired by xTalk for some light front end work alongside htmx. Didn't expect it to go anywhere.
I also wrote a multi-threaded backtester in C++ because the program I was using was only single-threaded. I stopped using that several years ago but the act of writing it was a lot of fun.
Given two version (old and new) of a Git change (i.e., individual commit or patch series from a pull request) it produces a diff that is actually useful for reviewing purposes, assuming you've already reviewed the old version of the change.
It's sort of like `git range-diff`, but where `git range-diff` produces a "diff of diffs" that is very hard to impossible to read, this tool gives you a direct diff between old and new versions, but filters out any irrelevant changes that were introduced because the author rebased on a more recent version of the target branch.
I hope that makes sense - I never know quite how to put it into words for somebody to understand who isn't intimately familiar with Git. It is very powerful though if you combine it with a minimal amount of setup e.g. for fetching all PR branches from a GitHub repository. I use it almost daily as part of my code review workflow.
once i got it to work, i left it on my desk for a few months and then cleaned it up/removed the circuit. only documented the circuit by a couple of bad photographs, so i'm not sure how to recreate it. i might could figure it out again if i spent the time, but i've been focused on other projects.
Shows a nicely formatted weather report for flying my paramotor, pulling data in from many different sources :-)
Never made it to prod but was a great tool for me to see where I want to budget my team's time.
This is way before all the LLM and Generator models, but it was such a fun project.
There's screenshots here:
https://github.com/samsquire/liveinterface
The code is Angular 1 legacy codebase.
https://github.com/samsquire/live-interface
There's a screencast here https://github.com/samsquire/live-interface/blob/master/scre...
It's not buildable at this time due to dependencies...
I used yt-dlp to download the metadata for over 6,000 videos on the SNL Youtube channel. I put it into a database, parsing out season/episode into fields where possible. Then I wrote a small Flask app to search or browse seasons/episodes, from which I could flag for download the sketches I wanted.
https://nvartolomei.com/omniverse/
Maybe, one day, after I’m satisfied with its functionality I’ll make it open(-source). For now, in the interest of keeping friction low, moving fast and breaking things, it’s pretty private.
To keep reading top of mind I built a Chrome "newtab" extension to show my "Currently Reading" list, and excites me about books I've put as "to-read". It has worked wonders on my reading! And it is pretty small and polished - no tracking, no credentials, just bare-bones.
https://chrome.google.com/webstore/detail/currently-reading/...
It leverages containers and Docker Compose, mainly for it's tooling that makes it easy to deploy. I made a tool that correctly selects the right node based on the directory I'm in using Docker Profiles. The networking is both internal and external; I share some APIs externally, like to share photos or to run video game servers, while other services are entirely privileged. It, for the most part, implements mTLS, and has both public and private DNS. I have a single ingress node in my cloud provider that is connected to my home servers via Tailscale. It's been instrumental in building out things at my house and making my life easier and cheaper.
Like other sys admins and devs, I had used email notifications for years to notify me whenever *stuff happens* on a server (like a job ran/completed, some storage device is low, etc.). But when matrix came out several years ago, i really liked the concept, became a bit of a matrix fanboy, and built a little script to leverage - nowadays, all of - my server notifications. Again, pretty basic/not sophisticated, but it scratches my itches.
* In one of my former workplaces I wrote (alongside another person) a gamified shared playlist app that allowed everyone to participate in being a DJ for our company hackathon (people getting more upvotes getting more playtime, songs getting many downvoted being skipped in the middle, etc). That was a lot of fun and surprisingly a very emotionally engaging experience for everyone.
https://github.com/asim/malten for anyone who wants to run it themselves.
You might want to add an intake tube, to cool the compressor more efficiently: https://imgur.com/gallery/kA4Z0uV
https://www.wittenburg.co.uk/Work/Interact/History.aspx
Still under development...
The system right now is highly reliable, I have no fear of doing a live demo of it, but live demos come off as strange because my feed is a strange mix of arXiv abstracts, Guardian articles about association football, etc. so it comes off as idiosyncratic and personal. (Oddly when I started this project I loved the NFL and hated the Premier League, when I started doing feature engineering as to "Why does it perform so well for arXiv papers and so poorly for sports" I started studying football articles in detail and started thinking "How would I feel if my team got relegated?" and "Wow, that game went 1-0 and it was an own goal" and next thing I knew I was hanging on every goal in every game Arsenal and Man City play -- it changed me.)
It's not even that hard for me to swap algorithms in and out but it should be easier, for instance I like the scikit-learn system for model selection mostly but there are some cases like SVC-P where I want to bypass it and I am not so sure how to comfortably fit fine-tuned transformer models into the system.
Another problem with it is that it depends on AWS Lambda and Suprfeeder for ingestion, it costs me less than $5 a month to run and about 10 cents per feed but (1) that's not cost-effective if I want to add a few hundred blogs like
and (2) I know many people hate AWS and other cloud services.
If somebody were interested in contributing some elbow grease that would help the case for open source, alternately a hosted demo of some kind would also be possible but I'm not ready to put my time and money into it. Contact me if you're interested in finding out more.
https://github.com/cynoclast/time
Usage example:
tm 8.5 9.27 8.83 8.87 9:45-1:23 1:33-
14:11
54 minutes
Notice you don't have to give it AM/PM? Also don't have to give it any flags. It figures out what to calculate based on number of arguments alone. And it knows 9:45 to 1:23 is around 4 hours, not -8.
And during the week, decimal hours for timesheets:
tm 8:30-12:30 12:40-6:40
10.0
I used it 5x a week during my contracting days.
https://www.youtube.com/live/v4uHqdTr-bs?feature=share&t=426...
There are a few simple but powerful building blocks. One main feature is an egg shaped "note" which can be placed, resized, retuned and cloned on the fly. It's played by physics interactions with a "mallet" or sports balls, anything with a collider.
One of the instruments is a sine wave organ which has drawbars to control the amplitude of overtones. Unlike a classic organ, these overtones can be independently retuned and assigned envelopes to produce a range of timbres. Pitch is consistently mapped to a spiral - an isomorphism of pitch space.
It has a theremin which provides visual and tactile feedback and a voice with vocal formants controllable with a thumbstick.
It has a physics based sequencer of sorts which consists of "mallets" on a wheel which spins at a desired ratio of whatever BPM is set in a DAW. These wheels can be cloned and multiple mallets arranged around the circle using the Euclidean rhythm algorithm.
Since low latency audio in Unity is tricky, the VR app is really just a controller for synthesizers running in Max/MSP and IEM spatial audio VSTs running in REAPER. One day I'd like to package some portion of it into a mobile VR app for things like remote jamming or music lessons where models of the theoretic ideas are right there in front of us to tinker with. For now, it's just for me.
https://github.com/nicko88/HTWebRemote
It's not all that impressive per say, but a number of people seem to really like it.
Also an app to add a "wind" effect to a home theater as well.
The Tesla app is great, but with one caveat: it won't let you turn on climate controls until the car has "woken up". Upon opening the app, this usually takes 5-15 seconds, but when I first got the car, sometimes took a full minute.
Someone else had already reverse-engineered the Tesla API, and I wrote a quick app that would just let me press a button and it would wait for the car to wake up and turn on the climate controls in the background.
1. A youtube bookmark manager for Emacs using Sqlite as a back end. - You can keep track of individual videos. - Manage series that span multiple videos. - remember interesting moments.
2. A system to help manage my finances by tracking what percent of my assets are in a given category. This helps with maintaining, say, a 60%-40% stock vs bond split across multiple financial institutions.
Working on replacing my wireless keyboard and trackpad with some "gloves" so I can use it while on hikes or just generally outside. Then, gonna integrate some custom AR and ML/GPT.
https://carefulwords.com/solitude
https://carefulwords.com/think
etc. Also unlike thesaurus.com, the search bar actually focuses so you can just start typing!
It's not perfect, I need to do a lot of editing, but nonetheless I use it almost every time I write, now.
The site is a little over 30,000 static HTML pages built with a number of TypeScript scripts that compile some sources for synonyms, parts of speech, and the quotes.
80% of a Teamfight Tactics simulation engine
80% of a data analytics platform for sports data
40% of a PaaS to manage common open source software deployments to the cloud
I don't finish much. It's my absolute greatest flaw.
- one was a SQLite3-based, all-SQL reimplementation of a subset of UName*It (an object-oriented database from the 90s meant for storing NIS/DNS/etc. data)
- another was an RCU-like lock-less, very fast user-space data structure written in C, born of frustration with read-write locks in Solaris
Of those the latter ended up being useful to me about 5 years later, and I still use it in production, though I originally wrote it for myself.
Currently working on moving the ICS calendar parsing part from a python script down to the microcontroller itself, then I can release.
I have a dedicated key for skipping (and I keep adding meta keys to make it skip more (each meta key is x2)). The next track to play is automatically selected based on the combination of two factors: being skipped less and being played less.
I get to hear my whole collection in a way that's far more enjoyable than an unweighted shuffle.
If I live long enough, I will factor out a general-reader version of this that will bring joy to HN power users everywhere.
It requires a keyboard, though. Do the kids still use those?
It uses the Spotify web APIs to fetch your album collection and gives back a random album from it. I use it daily.
Eventually I got bored of grabbing these mistakes and left the tool with my clan. It had the side effect of getting people active on Discord, and making people more actively involved in countering raids. We ended up building one of the most elite clans in the game until some other whiz kid built a better bot.
There was also this little augmented browser tool that calculates the best order and timing to attack in the game, and the statistically likely result.
We'd joke that all the tools we built for that game were probably well worth hundreds of thousands of dollars and that's around the time I decided to quit and spend my time on something more useful.
I set up custom entry codes that I could hand out to anyone. Everyone got their own code, and it would text me whenever someone used a code so I'd instantly know who was coming. The text conversation was my timestamped access log. I also put time constraints on some codes so e.g. Doordash couldn't open the gate in the middle of the night, or I could set up a temporary access code for a party, and I rotated codes too, with text notifications if an outdated code was used.
I thought about making a paid app out of it, but it just didn't seem worthwhile. I didn't expect that many people would want to pay for it. For a while I was excited about a YC startup called Doorport that was going to make a hardware device that you'd install inside those dumb call boxes and make them smart with all sorts of cool features, better than my Twilio hack. But I think they pivoted to a much less interesting pure software thing and then got acquihired.
Basically it's a script that scrapes several places for flight deals and "mistake fares" and notifies my phone if it matches with my city. No searching like other flight apps, you basically just set it up and wait, and various places will pop up. Helps if you're in a hub city e.g. NYC.
The phone notification was crucial because such deals sold really fast. In case the booking didn't work out I was usually covered by the 24 hour cancellation rule [0][1].
I started off running it on my own server but later I learned IFTTT handles device notifications without paying the Apple Developer tax, so I migrated things there. Used it more when I was single but nevertheless it's helped me land some killer deals e.g. NYC-Dublin RT for $300, NYC-Paris RT for ~$400.
Thought about making a paid app out of it but the limited seating and time-sensitive nature of these deals is tricky.
[0] https://www.transportation.gov/airconsumer/notice-24hour-res...
[1] I believe this rule, which is not so broadly known, was imposed on air carriers in response to certain fraudulent online marketing practices going on at the time.
[1] https://noben.org/boomwrist/ [2] https://noben.org/boomdeck/ [3] https://noben.org/tvmaster/ [4] ... https://noben.org
Normal recipe sites tend to be full of irrelevant (SEO optimized) text, ads and tracking, and I wanted something to just get the recipe in a clean form.
It’s a basic web application (mostly in Go) to manage recipes. New recipes are imported from an URL, after which it extracts the plain text from the site and uses GPT to get a markdown formatted recipe and list of ingredients.
This would’ve been much harder pre-GPT, but now was trivial to implement.
A lighting desk for my hobby of lighting live music. For reasons I like doing live control along with the music (known as busking). Existing things are either limited and can't control moving lights, or don't have the flexibility to busk the way I want. so, having worked a long time ago for a crowd that built what were at the time the best lighting desks in the world, I built my own
It has 36 motorised faders and a bunch of other boards with buttons, that each ave their own AtTiny to run the function, they talk to a BeagleBone Black which runs the main code loop and uses its on board realtime processors to generate DMX, and a raspberry Pi to run the GUI for configuration.
Worked a treat most of the time, and I've done hundreds of shows with it, with crowds of up to 400 people, Sadly, I made a dumb decision on the protocol for the fader and button boards to talk to the BeagleBone and every now and then it causes a kernel panic on the Beaglebone, which means at best you lose control of the lights and at worst it goes dark on stage.
I started a redesign using a more sensible protocol but got hit by a double whammy of Covid killing the live music scene for a couple of years, plus the all the supply chain issues, so it's on hold now.
- infinitely big or small resizing
- has no visible borders
- has a close all button
- windows size enforces image aspect ratio
- taskbar item thumbnail is the image
- can be moved by clicking and pulling it anywhere (besides resize borders)
- can be moved beyond the edges of the screen (no kind of snapping, like pushing windows below the top border)
I used it for more effeciently using and managing my screen space during masturbation to images and it was a testiment to my almost complete mastery over winforms and p/invoke and the low level windows window api at the time.
It gives me "instant" public URLs to localhost without any downloads/configs. I use to to quickly send files, share and check frontend on my mobile device.
Unless it has a bunch of secret stuff in it. Then I guess you’d have to.
Don’t underestimate the tenacity of HN readers though. Lots of us would do that kind of thing just for fun. You don’t have to do it all yourself.
Ended up with an Amplify app that had basic login, file upload with image thumnbnails, indexing of frontmatter, some query macros to list pages matching specific criteria, autocomplete for frontmatter and macros, and ability to make specific pages public if I want to. Apart from login, it only uses direct S3 calls, so I'm effectively only paying for S3 storage costs.
It scraped basically every single player's performance in every single NBA game ever. I tried XGBoost and Keras, and the Keras model outperformed the XGBoost model. Was about to incorporate real-time injury data, so if a player was injured or out that game it would not select them.
In the end it didn't perform too well. I think the limitation was my lack of domain knowledge, and not really knowing what features to select that would predict a players performance. Also data. I hear MLB is more consistent than NBA because there's just more data.
My current streak is 347 days! It really made ME journaling daily. A number of folks who have also registered maxed at 61 only :(
I'm currently hacking the SNES mouse into Sim City.
I use twilio to make outbound calls to that number using my registered phonenumber. I put a Django app in front for home owners so they can add authorized phone numbers with a expiration date.
Whenever someone is a the gate they call a twilio number, my django app checks the validity, opens the gate by calling the gate’s number with my number as ID, plays back some welcome message “hello chris, welcome to…” and sends the owner a push notification that person X is en route.
Todo: add a feature to redirect an unknown number directly to the owner and open the gate after manual verification.
It was written as I got sick of particularities of squid proxy. Using it for 5 years for home network as transparent proxy, never released it.
"A picture is worth a thousand words":
Application Options:
--listen= Listening ip and port (format "address:port") (default: 127.0.0.1:8080)
--ini= Path for .ini file, if not there it will be created with defaults
--id= Unique id, used for caching and avoiding detection of injected js. (default: machineid)
Certificate Authority: --cakey= CA Private Key for MITMing https connections (default: ca.key)
--cacrt= CA Certificate for MITMing https connections. It must be imported into client(browser) as trusted CA (default: ca.crt)
--cagen=[512|1024|2048|4096] CA Private Key (and CA Certificate) generation, keysize. (default: 1024)
Upstream Proxy: --upstream.proxy= Upstream proxy (format "address:port")
--upstream.cacrt= Upstream proxy CA certificate
Lists Options: --list.update= Update databases interval for https paths (default: 24h)
--list.path= Path for caching downloaded lists (default: lists)
-D, --domain.blacklist= File/url paths with domain blacklist
--domain.whitelist= File/url paths with domain whitelist
-U, --url.blacklist= File/url paths with url blacklist
--url.whitelist= File/url paths with url whitelist
-A, --adblock.blacklist= File/url paths for adblock rules
--adblock.whitelist= File/url paths for adblock whitelist rules
-N, --cname.blacklist= File/url paths for cname masked domain blacklist
--cname.whitelist= File/url paths for cname masked domain whitelist
-S, --asn.blocklist= ASN address ranges to block (macros:"facebook", "google", "microsoft", "apple", "amazon")
--asn.whitelist= ASN address ranges to whitelist (macros:"facebook", "google", "microsoft", "apple", "amazon")
-R, --regexp= File/url paths for regular expression replace rules
--inject.list= File/url paths with js injection rules
--inject.cache Inject into cache, faster, updating script require cache invalidation
CDN caching:
-C, --cdn.blacklist= File/url paths for cache forever cdn rules --cdn.whitelist= File/url paths for cdn whitelist
--cdn.expires= Defines expiration for CDN cache (default: 30d)
DNS resolve: --dns= File/url path to list of dns servers to use
--dns.change= Defines timeout for changing the dns (default: 10s)
--dns.timeout= Defines timeout for dns to respond, if exceeded it will be excluded (default: 250ms)
User Agent: --user-agents= File/url paths to list of user-agents used
--user-agents.random= Generate specified number of random user agents
--user-agents.change= Defines timeout for user-agent randomization (default: 300s)
Privacy Options: --header.cspreport Allow CSP reporting
--header.cache Allow cache headers reach clients
--header.expectct Allow Expect-CT header
--header.etag.remove Enable removing of ETag used for cookieless tracking
--header.hsts.remove Enable removing of HSTS header (we are doing mitm anyway)
--header.dnt.enable Set Do-Not-Track header
--image.reencode Enable re-encoding of images to remove hidden tagging
--amp.allow Allow AMP redirection
--cookie.validity= Change domain cookie validity ('0' is per-session cookie, off for disabled) (default: off)
--cookie.validity.3rd= Change 3rd party domain cookie validity ('0' is per-session cookie, 'off' disabled) (default: 1h)
Documentation:
-v, --version Version information
-l, --licenses License information --man Generate man page
--txt Generate text documentation
Caching: --cache.compression.disable Disable all compression
--cache.sharing.clients Enable clients share same cache
--cache.sharing.xsite Allow cache sharing for 3rd party domains
--cache.media.enable Cache media content (disk & memory impact!)
Memory Caching: --cache.mem.disable Disable caching
--cache.mem.size= Maximum size, if reached expire oldest entries (default: 512mb)
--cache.mem.expires= Maximum time before it expires (default: 24h)
--cache.mem.nocompression Disable memory cache compression
--cache.mem.min= Minimum content size to cache (kb, mb, gb) (default: 512)
--cache.mem.max= Maximum content size to cache (kb, mb, gb) (default: 2mb)
Disk Caching: --cache.disk.disable Disable caching
--cache.disk.path= Path for on disk caching (default: webcache)
--cache.disk.size= Maximum cache size in megabytes (default: 1024mb)
--cache.disk.expires= Maximum time before cache expires (default: 30d)
--cache.disk.ttlexpire= Timeout to execute task for expiring cache values (default: 10m)
--cache.disk.nocompression Disable disk cache compression
--cache.disk.min= Minimum size to cache (kb, mb, gb) (default: 512)
--cache.disk.max= Maximum size to cache (kb, mb, gb) (default: 10mb)
Developer Options: --log.level=[trace|debug|info|error|fatal|panic|off] Logging level (default: error)
--log.output= Logging output filename or stdout, stderr (default: stderr)
--log.json Logging is formatted as json
--header.debug Enable sending debug headers to clients
--db.optimize Enable statistic database optimizations
--threadpool.size= Size of thread pool (0 disables thread pooling) (default: 200)
--threadpool.proxy.disable Disable thread pool for proxying
--threadpool.filter.disable Disable thread pool for filtering
--threadpool.tools.disable Disable thread pool for tools
--domain.resources= Proxy resource access domain (default: my.proxy)
Help Options:
-h, --help Show this help messageIt was originally created to drive a particular large LED installation I work on, but I've generalized it to the point of being able to drive other installations as well. It passes texture data between nodes running compute shaders to chain together patterns/effects, which is a fun and powerful paradigm for creating visuals. Not as powerful or featureful as "real" solutions like TouchDesigner, (which, if I'd known about when starting out, I probably would have just used), but I do know all its ins and outs and can change it exactly how I want, which is nice.
https://github.com/rajangdavis/macrocosm_js
Was inspired by some existing editors so I made my own and extended it to create macros for sending sysex/PC messages to multiple devices.
I thought it would be easier post-launch to get restaurants to participate and add their own information (nearly-free marketing), but that was a faulty assumption. The admin interface is also pretty cool, very simple to specify blocks of time when the specials are active.
Unfortunately it hasn't been updated in 4 or 5 years. When Covid first started, I launched a sister site just to list restaurants that were open, I took that down about 6 months ago.
Anyway, yeah, that FF extension. It represents the culmination of about 5 years of me trying to solve this problem with progressively more complex and incrementally better solutions until I finally arrived at a ridiculously over-engineered version that actually works as it should.
[0] https://github.com/RheingoldRiver/MuteTabsMatchingPattern
[1] https://river.me/blog/global-hotkey-mute-firefox-stream/
You could also have a fallback that forwards the call to your cell phone after a failed attempt at entering the code. But most of the reason I built this was so it would stop calling me at random times, so I didn't really want that.
Since then however they've closed their formerly open API. This inspired me to pick it back up.
I've got a mobile friendly webapp, an official SDK, a basic cli for scripting. Basically everything I wanted.
The UI of the webapp is pretty spartan as I prefer, so I'm scared it doesn't have mass appeal. It's super fast however.
I have hundreds of notes in it, use it for all my note keeping. I am it's only user. My friends have access, but they don't use regularly.
I want to open up to the public eventually, but these days I'd really want to get e2e encryption working before doing so and just have not found the time.
After failing to integrate the software into Western Digital's MyCloud NAS line of productions, I left and decided to try something different. I created a photo management tool that could feed into other photo programs. It's open source and available on github.
https://github.com/jmathai/elodie
I started off using it with Google Photos. Explained here, https://medium.com/swlh/my-automated-photo-workflow-using-go...
I've since switched to using it with Synology Photos.
8 years and counting.
Input is a JSON string describing the code, out comes code examples in plain JavaScript, React, Angular, Vue, Svelte, and jQuery.
Helps me generate extensive docs on my own.
Not much for instructions but it’s here is anyone is interested. https://github.com/jpatters/goodlife-receipts
I've a few friends that have the same itch and so we were constantly exchanging recommendations via different communication channels (Signal, email, Slack etc.)
So I started building a website that's "like Goodreads, but for music releases". You can mark albums as "want to listen", "listened" and "dig" (loved), organizing your lists with tags and notes and share them with others. You then have a public activity profile and you can add other users as friends and see their own activity.
Original Show HN post: https://news.ycombinator.com/item?id=32551862
As a minor detail I also translate everything to the same language as part of the transformation. Just a bit of prompt experimentation.
Thankfully it was a phone call so my mom didn’t see my aghast expression. I prefer that big tech not index this stuff! Better to keep “in the family”
Seriously why does big tech deserve this free & super-private window into me & my ancestors lives?
So I wrote something[1] where:
* it’s fully free & open source
* cloud native
* plays on any device, any bandwidth, even if shitty
* yes my 90+yo Aunt Loretta (w00t to you Aunt Lo!) can use it on her phone & computer
* all data can be always encrypted, both source videos and derived/optimized assets
* and there’s more. please have fun
Basically point it at a source bucket on S3 or B2, and get your own private YouTube.
What I’ve built is very limited in functionality atm, but I believe the foundation is solid and plan to extend media support to photos and audio.
This can be a nice alternative to Plex/Google Photos/YT/etc.
It’s for when you don’t care about “building an audience” and in fact prefer that big tech can only see encrypted bytes from you.
Try it out and lmk!
https://blog.bschwind.com/2016/05/29/sending-infrared-comman...
Since then I made a much slimmer, cheaper, more efficient version based on the ESP32 but I haven't written up much about that.
I also created my own keyboard with firmware in Rust
https://github.com/bschwind/key-ripper
I've done a bunch of other small one-off projects too.
They'd be like "Oh but I pay $5/mo for this wordpress host, it's fine?" and I'd send them a report saying their website was offline for say 10 hours that week, and to calculate how much being offline for 10 hours would cost them.
Eventually a client asked to be setup with their own account, so I took the time to go full-SaaS.
A set of Python scripts to automate the importing of financial transactions into Beancount. Been using it consistently for ths last 3 years to manage my finances.
It's called Dock'n'Roll https://youtu.be/nITIMrND0Z0
Easier said than done maybe, but please don’t feel like you need to get it perfect. We’ll do a lot of the legwork for you.
Also don’t underestimate how cool it is to get to see what you use in its current form, even if it’s rough. There’s an archaeological component to this that’s quite gratifying.
With triggers like: If the cleaner is more than 15 min late 5 times in a period of 3 months and there are more than 5 resumes posted for cleaning positions do not open the door and fire them.
The Python program produces a regularly updated XML document, which references some XSLT so that when it's loaded in a browser it'll render a nice HTML page with styling and images and stuff. The Raspberry Pi serves that over an HTTP server in the local WiFi, and in the kitchen there's an old Amazon Fire 7 tablet stuck to the wall where a Kiosk browser keeps that page on fullscreen display and regularly updated. The tablet also has all sleep modes deactivated so it is on all the time.
This way we never forget to move out the trash for collection, which we did regularly before I had this solution in place (built it about 5 or 6 years ago). It's horrible in a family of four if the trash is overflowing just because you forgot to move the trash cans to the street so they can be picked up.
2 years ago the solution (called "Internet of Trash") was extended by a little Bluetooth label printer located next to the tablet in the kitchen and some UI on the web page allowing to quickly print sticky labels with two lines of text, usually used to label boxes with food leftovers and pre-cooked ingredients (such as sauces for example) with what's in the box and the date when it was cooked. The UI has easy quick-choice buttons for the common food items we usually have and the last few days for the second line, but also allows free-form entry. It relays all input via the Raspberry Pi which sends it over Bluetooth to the printer. The labels help us immensely to keep track of leftovers stored in the fridge or the freezer - not just to know the exact type of food in the boxes, but also to determine when stuff has to be thrown away or which to use first when multiple boxes contain the same food ingredient.
Ive used it to look for software that's out of date (via https://endoflife.date), to find vulnerablilities (via https://osv.dev) and get license information (via https://deps.dev)
It's been hugely useful for us understanding use of internal and external dependencies, and I wish I'd built it earlier in my career so I could've had it for other companies I've worked at!
So I hooked the remote up to an oscilloscope, figured out the signals it uses and used a nRF52 dev kit plus a small custom PCB shield to be able to control it over BLE. A small toolbar utility for the Mac and it’s more convenient than it’s ever been.
The carpet was an arrangement of 4 particular colors tiled in squares, so I manually made a carpet map (a few hours in excel!), wrote a carpet color classifier to run from under-robot camera data, then integrated with a particle filter for location tracking. Write up is here:
https://github.com/tim-fan/carpet_localisation/wiki/Carpet-L...
I wrote it only ever expecting usage in this particular office, but if anyone has a similar carpet and a robot that needs localizing, please reach out!
https://github.com/churchofthought/HexagonalComplexAutomata
https://github.com/churchofthought/ScatterLife
Was working on a new one based off of Gerard Hooft's beable theory, a superdeterminism of sorts.
But then WebGL 2.0 Beta got replaced by WebGPU. So it doesn't run anymore: https://github.com/churchofthought/Grautamaton
But here is a video of it used for a non-abelian sandpile system, when Google Chrome Beta could run it:
https://photos.app.goo.gl/NE1XU1tcdKS4ySLa9
and the resultant "cooled" equilibrium universe: https://photos.app.goo.gl/dn5jpUW9y3JMrxJi6
- I have a disability and require daily personal care so I made a system for recruiting and hiring caregivers. (https://blakewatson.com/journal/a-home-cooked-app-for-hiring...)
- I need to track those caregivers' hours so I can make sure timesheets are accurate, and I wanted to do it with minimal effort. So I created a plain text syntax readable by a web app I created that takes that syntax and outputs exactly what should go on the timesheets.
- Sometimes the government agency that runs the program doesn't send me enough timesheets, so I created a "forgery" of their timesheets in CSS where all of the values are interchangeable via JavaScript. Now I can print any timesheet for any one of my caregivers for any time period on demand.
- I made my own web-based bookmarking tool to replace my Pinboard account. It automatically sends every bookmark to the Wayback Machine. (I wrote about that one and a couple of others https://blakewatson.com/journal/the-joys-of-home-cooked-apps...)
- Sadly I'm no longer able to use this one because of decreasing strength, but I once created a custom mobile-based keyboard for typing on my Mac. https://www.youtube.com/watch?v=Pre6EQGIuKY
- I wanted to be able to share my plain text notes so I made a CLI for selectively publishing notes to the web.
Really most everything I make outside of my day job is for me/family initially, but a lot of it I end up publishing. For example my main side project is A Fine Start (https://afinestart.me/). It actually started as an assistive technology just for me—typing is difficult so I wanted a new tab page with just clickable text links. I used it for a while myself before eventually turning it into a browser extension and service for other people.
Source: https://github.com/xNaCly/fleck
I'm running on an esp32, with platform.io, and esp-sdk + Arduino. Overall project: https://github.com/russor/ClockThing
iCal library: https://github.com/russor/uICAL (if I had know how much work I'd need to do to make this library work for me... I might have left it with my hacky solution of processing on my own server in perl in a cron... But I had too many messups with that)
FWIW, Google Calendar recently stopped including real Timezone information in the calendar urls for newly created calendars. I ended up doing something gross to manage that (got a dump of all the tzurl 'outlook' calendar files, and load that before loading the user calendar; it's sketchy, but it works)
It was very simple, using a 555 timer and took almost no time to make, but it was among the best returns of effort I put in vs value I got out of it. It also stands out as one of my few personal projects that was something physical since most of them are only software now, and more tools than things purely for fun.
I did this because I've had problems hiring DevOps (lack of resource / lack of people to hire / and kubernetes was just too complex). I decided that I need a tool let's me have my own heroku on my own infra and here we are.
It's like Node Red, but simpler and less resource intensive.
The idea is to get the file to the "Inbox" of the system, and rest is automagically handled.
There are plenty of brewing tools out there, but ito data model and workflow they are all basically descendants of ProMash. I wanted something that approached home brewing with a focus on process instead of ingredients.
My data model of a "recipe" is a DAG of typed process steps each of which can have ingredients attached. Liquid volumes move through the DAG and are modified at each step. Outputs of the recipe are at the leaf nodes. This model can represent any wacky brew day you can dream up - including and not limited to multiple mashes, splitting or combining volumes pre or post mash/sparge/boil/cool/ferment/whenever, packaging wort, etc. The regular tools usually can't even represent a partigyle batch properly.
Honestly for my regular 20L single-infusion no-sparge brew day it is probably slightly less convenient than say Beersmith. But for unusual situations it shines. For eg this past festive season I found myself needing to stock up quickly. Designing a 40L "one mash, one boil, two different beers [1]" double batch brew day was easy, and hitting all the numbers along the way for such a mad-hatter exercise was incredibly cool.
[1] Scottish Export and Sweet Stout
It measures and corrects pH, electrical conductivity, oxidation reduction potential, temperature of the air and water, water level, and humidity. It also automates pumps, lights, and fans (I know people normally advise against this). None of it is particularly sophisticated, but I’m really proud of it.
I initially used a deep water culture and later moved on to the nutrient film technique. It produces a lot of greens and herbs — way more than I ever expected — and it’s remarkably hands off. I recently left it to do its thing for almost 3 months before I had to intervene, and the problem wasn’t the water, nutrients, or the system failing explicitly. The plants just got too big for their channels and as they became stressed, they developed some pest issues. It was such a cool and empowering experience to see real world automation Just Work.
The whole thing is powered by an Arduino Nano RP2040 Connect. It’s a great little controller.
I’m currently designing my first PCB to consolidate the system onto a single board so my friends can easily build their own. It’s not extremely cheap, but it’s not too expensive either and you get a tremendous amount of food from it. It’s such a fun hobby.
- a in car audio system that has physical buttons and text to speech output instead of a distracting display panel. Worked really well for a few months but my soldering wasn’t (then) up to par so it eventually fell apart.
- a Bash replacement shell, which I later open sourced and now have a few users beyond myself. But it started out as a personal project not intended to be used by anyone but myself. like is in my profile (if anyone is interested)
- home automation software which manages everything from internet management through to some physical stuff like lights. At one stage I did also have Alexa skills and an Android app written to interact with it but I rarely ever use them so didn’t bother keeping those Alexa skills nor Android app up to date and just use the web portal (or SSH) the very few times I need to override any default automation.
- back in the Windows 95 / 98 era I wrote a desktop shell to replace the standard one. It was inspired by Linux desktop environments though I probably didn’t realise it at the time.
- currently I’m building a robot with my son. It has object detection, wheels, speakers and will have some rudimentary Alexa-like voice control.
I didn't really plan this part, but since going past their target date they started counting upwards and have accumulated 4500 days or so.
- A scriptable screenshot/video capture utility https://xenodium.com/recordscreenshot-windows-the-lazy-way
- An iOS habit tracker that's neither cloud-based, nor needs an account, social, wants my attention, data, etc. https://flathabits.com
- An iOS scratch pad that removes further friction than typical note apps https://xenodium.com/scratch-a-minimal-scratch-area
- An iOS org mode app 'cause there are lots of Markdown ones but almost no org mode ones https://plainorg.com
- A way to easily record more complex commands (ie. ffmpeg) and make them reusable for the future https://xenodium.com/seamless-command-line-utils
I’m looking forward to digging into your work. I haven’t really known where to start, but I can probably get a lot of inspiration here. Nice work!
Most of my current user scripts:
• Hold z to make a currently-playing audio or video go at 4× (the fastest you can go before Firefox cuts off the audio).
• Auto-admit in Google Meet (wish they’d implement this themselves). There were a couple of browser extensions to do that, but I looked at their source and was appalled at how badly and/or stupidly they implemented it, and so wrote this, which is better (… so long as you use English—one of them supported I think it was Japanese as well) and more efficient: new MutationObserver(() => { document.querySelector("[aria-modal='true'][aria-label*='join'] [data-mdc-dialog-action='accept']")?.click(); }).observe(document.body, { childList: true, subtree: true });
• Retitle a few web apps that have consistently useless document titles, by pulling in actual document contents. I gave this to my sister, who regularly has hundreds of VicFlora tabs open, which used to be all titled “VicFlora”; last year they fixed that but got the endianness wrong, “VicFlora – ‹Page title›”, so I fixed that to “‹Page title› – VicFlora” so you can actually see the useful part in the tab bar. (Document titles should be little-endian.)
• Find <video autoplay> and turn on controls (since I have autoplay blocked—incidentally, this is something disabling autoplay should probably automatically do, at least until you start the video).
• Kill aos-* animations on pages, which stupidly tend to make the page invisible until their JavaScript loads. (This is important for me because I disable JavaScript, but those “fade in when the page loads or as you scroll” animations are really annoying even when they work, killing them makes things better.)
• Fix Cloudflare “[email protected]” stupidity without having to run the page’s arbitrary JavaScript. (Basically: take their deobfuscator script and just run it myself if it gets used. Only people that deliberately block JavaScript are likely to have seen this, but it’s quite common. The filter they use is evidently very dumb, obfuscating quite a few things that are not email addresses, including things like “package-name@1.2.3” (not even valid—IP address hosts have to be in square brackets, and DNS doesn’t use numeric TLDs) and “user@host” in console logs.)
• Put the current weather into the favicon on weather.bom.gov.au (… except that they this shut down last month for no obvious reason, with no equivalent replacement unless you run Google Android 6+ or iOS, which I don’t on any device, let alone my laptop; so I’m stuck with just their old site which completely lacks a lot of the information this other thing had exposed, and is served over HTTP only but their server accepts HTTPS connections in order to 307 redirect to a different path on http: scheme as well in order to say “we don’t support HTTPS”, which interacts horribly with “HTTPS Only” mode (because even when you add an exception for the duration of the session, you lose the path part of the URL), and is the only site I’ve ever encountered doing such a stupid thing, and in all this they have never responded to my enquiries like they claim they will).
I had mine integrated with Home Assistant and got notifications via a telegram integration.
I also had mine setup so me or my room-mate in our apartment telegram group could register new codes, or generate single-use codes.
I also considered building it into a paid app, but came to the same conclusion :-)
Most "created" thing was a fishing bot for a MMORPG that used computer vision to navigate the interface and detect when you had caught a fish and reel it in.
I made a small service which aggregates receipts from assorted sources (usually webpages, pdfs), takes a screenshot of them, parses the information out, and uploads them automatically for reimbursement.
- Instagram-like, private photo feed, where my partner and me can share pictures of our kids with relatives and friends. Posting works via e-mail, cron job generates the feed html. Imagemagick output multiple image formats, supports iOS live photos too. The feed isn't paginated, but with lazy loading the images it's still very performant.
- Most recently and still ongoing: A recipe clean-up tool. Removes all the gunk and fluff from online recipes. Shows just the ingredients and instructions. Also understands units and quantities, so unit conversion is up next. Here it is: https://pretty-recip.es/recipe?recipe-url=https%3A%2F%2Fwww....
I got tired of installations that would break others and of project requirements that would differ from others in tooling. So I use dew to run most of the CLI tools that I need and to build development environments that fit the (sub-)project at hand. When things go mad or disk space has become short, it is only a matter of cleaning the set of docker images to recover.
You don't need dew to do all this, aliases will do in most cases. They would all be mostly the same and you would have to remember how to solve problems for each tool at hand. So dew groups those under a few concepts that you can turn on and off for the specific tool/environment to run. It hides all those ugly CLI parameters behind configuration variables, and finds the set of necessary variables for a given tool/environment under a .env file automatically. dew is quick enough. In most cases there is little difference between running "dew yourfantastictool" compared to running yourfantastictool installed directly on the host.
The code has grown with time so I have used dew as an exercise in trying to write readable code and organise it, even though it's written in good old shell and has long passed the size of what should be written in shell...
Things that perhaps are a little cool with dew: - It can rebase a barebone image on top of another one, so that you can use the tool from the barebone image and perhaps rebase on something that has coreutils or similar. This is remembered as a local image for next time. - It can inject commands to be run before becoming "you" in the shell, so you can install more (as root inside the container) before switching to a gentle user. This is remembered as a local image for next time. - It can use a local Dockerfile for complex scenarios. This can replace the two cases above. - You can have access to docker from inside the container, and it downloads the latest version of the docker client for you (by default: this can be turned off). - It can create files and directories, possibly with initial content for you before running the container. This is because -v xxx:xxx will always create a directory if xxx did not exist, and because some tools require a minimal configuration file to run. - It has initial support for podman, but I still haven't given this as much love than the rest so your mileage may vary...
PS-- I also wanted my docs in any language, but also that anyone else could translate their app/docs easily, so I made this other thing[1], which is why these docs are available in so many languages
[1] https://github.com/cobbzilla/hokeylization / https://www.npmjs.com/package/hokeylization-lite
https://github.com/dclowd9901/olccChecker
It updated itself against the remote repo and ran on a daemon.
She is fond of music from old classics (from the 60's and earlier), so I hooked up a Raspberry PI with an FM transmitter and created her own private radio station. She tells me what songs she likes and I create different playlists that get broadcast on her station. It preserves the surprise element of radio, and there is nothing in there she doesn't like.
The tiny FM transmitter is surprisingly powerful. Her neighbours (of similar vintage) are very happy too, so their requests have also started coming in :)
EDIT: I wanted to add that I am the UI ... she doesn't get to choose the playlist. To make my life easier, I just created different playlists for different times of the day ... calm/spiritual/slower numbers in the early and late hours, peppy during the late morning and evening etc.
It was way back before gpt and twilio, so I bent one IRC bot and wrote collection of warm messages that was send via SMS on a pseudorandom timeframe. We broke up when she finds out ... Luckly for both of us I guess.
And an app that records audio retroactively. Wanted to have recorded the last 2 minutes? just tell it "-2m". It has a ring buffer that buffers the last 2h, but also forgets all the time. (at least that was the plan, but audio streams were so much more difficult so I just dumped a full day of audio and timestamps and cut it later. That makes it much more "eavesdropping" again though which I wanted to avoid with the auto delete though....)
I reverse engineered a flash application that showed a map and provided address search. I scraped the map tiles and address to location database. Reimplemented the viewer application as a Java applet and preloaded the tiles and address database to a microSD card connected to the phone. So essentially I built my own offline maps for my not internet connected phone.
Address search required prefix tree because IO was too slow to use binary search on the phone.
Anyway this was done just before I went to a new city to attend university and it was really helpful to find out where I am and where to go. There was no navigation, but it showed the map, gps location and the location where I needed to get to.
So that was my personal project that really had great utility for me.
- auto detect and convert column types
- save as a parquet file in a folder
- then autogenerate a sqlalchemy table/metadata file in python for all tables with sensible defaults for column types (e.g. 2x the longest string in a column for varchar)
- build the db and all tables
- load data from the files into the tables
this makes it really easy to bootstrap the entire db from a folder of parquet files for testing with sqlite and then makes it easy to move to prod on postgres/sqlserver etc. Before I go to prod i still have to add constraints and keys and indexes but that doesn't take too long. and for dev/testing the data's not too big so performance doesn't really suffer from lack of keys/constraints then we can use something like alembic on the big sqlalchemy tables definition file to do db migrations.
it's kind of like this: https://github.com/agronholm/sqlacodegen but solving an inverse problem.
basically it bootstraps the db and schemas and gets me like 95% of the way there. my quality of life is better with it.
I've since built a couple more for my other tanks, and I rewrote the firmware for ESP8266/ESPHome. Now my family can ask Alexa to feed the fish, because of course the world needs that.
I'm wondering: have you considered setting up a Peertube instance and what were the reasons for not doing it?
Other question about not giving away your private data to big tech: Why is S3 better than a private YouTube channel?
As far as Peertube, I don't know enough about it. If I put a massive-bitrate video in some weird format on it, and then try playback on a crappy phone, will it work? If I go through a short tunnel, will it buffer or degrade quality gracefully? I don't want to worry about it.
1. I have too many aunts/uncles/cousins but we have a long (30 year at least) tradition of doing a family gift exchange over the holidays. After one too many years of forgetting who I had or having my mom get asked by my aunt what my cousin should get me I build a website for my family that allows them to manage a gift list. Started as a super basic Django app and that was about 7 years ago and every year I add one or two features. Now it’s got all kinds things like notifications and will even help you track your incoming packages and know if they are gift wrapped or not.
Thing 2, was a wedding evite/website for My wedding. At the time I looked around and hated how impersonal all the evite options were, so I created a website with a cms that would give every user a customized, personalized experience. Invited to the rehearsal dinner? you see that dates and details. Are you one of my friends? You get the set of content with our inside jokes. It didn’t need any kind of login or passwords but provided everyone with a custom page. It also provided me with a full database to manage rsvp, song requests, track who gave us gifts (and what), etc. Yes my partner thought it was overkill (to answer that question) but it was super fun to build and ended up getting retooled for my sister in law’s wedding last year.
Ten years later, I'm still fiddling on it and it has grown to a real open-source project that you can find on github [0]. It's still primarly here to serve me since I'm the only maintainer but starts to be driven by external propositions. It's meant to be easy to deploy, easy to use, cheap in resources and reliable.
My team runs with:
https://sprintcalendar.com/3-week-sprints/start-2023-03-23/r...
I wrote this 11 years ago for my friends and myself who were going through a phase in our lives when we used to challenge each other with mathematical puzzles.
The use of this tool spread from my friends to their friends and colleagues, then schools and universities, and then to IRC channels. Now it is the oldest mathematics pastebin that is still online and serving its community of users. Visit https://github.com/susam/mathb for the source code of this tool.
* An Alexa app that provides a search interface to Old Time Radio shows on archive.org and saves your place (this was technically for my mother-in-law, the proof-of-concept with arcade sounds for my spouse). We all ended up using it a ton, though, it was kind of magical (the random function was really fun). I also set up an Alexa app to read me recent CVEs, but it’s more of a goofy parlor trick than useful. ;)
* A Rube Goldbergian bunch of terrible scripts that I can feed PDFs to, OCR, poorly-translate (using the expected engines or my own diymodel) and generate epubs from. And a bunch of scripts that convert Markdown to LaTeX and epub for personal book publishing projects.
Thanks for asking this question, it’s so neat to see everyone’s responses! I might ping my spouse on this post, too, who’s developed a crazy amount of personal projects that combine software and hardware to fixup our/our families’ lives.
And right now I am working on my own modal text editor which might never be used by anyone else. Just for fun and to see whether some Vim features could be improved or done in other interesting ways. tl;dr so far: Vim does things really damn well, sometimes to a point you don't even think about it because it simply never fails. That said I did manage to finally solve a tiny issue with the keybinding system that always bugged me, resulting in support for smooth text macros as a side effect.
She had fun pressing letters on a keyboard and then seeing them on the screen - possibly learning alphabet and keyboard layout at the same time :)
Concerning the video/custom mobile-based keyboard: If interested you could look at how kde-connect implements the remote pointer control you mention at the end of the video. kde-connect is also available for macOS, though not fully supported (per https://github.com/KDE/kdeconnect-kde) and the last macOS builds seem to fail (https://binary-factory.kde.org/view/MacOS/job/kdeconnect-kde...). But i can attest that it works great on Ubuntu via GSConnect with Android.
It was still a lot of work aggregating trade histories from various exchanges into a standardized schema, but I took some comfort in understanding the process. I also avoided the need to share exchange API keys and trading data with 3rd party accounting tools.
If you discover any bugs, please don't tell the tax authorities.
But the feature I like most is that it turns on/off the stereo via an infrared LED. It detects sound and silence on the pulse output and sends the proper IR command. A small thing, but it still makes me happy whenever it does its work in the background.
Honestly, a lamp that uses a 1W red LED behind a big diffuser. It uses PWM in the MHz range for dimming (so definitely no flicker), and big physical controls. My wife and I both get migraines and being able to set very dim red light seems to be better than sitting in complete darkness. I have insufficient data to tell if this is a real effect, unique to us, or placebo.
Code is in AVR assembly, because that's easiest for me. Sometimes I feel silly that after all these years working with technology, this is the most useful thing I've managed to build for myself. Hey, it's not nothing though :)
Nowadays you don't even need that. You can turn the RPi itself into an FM transmitter. Search "how to FM broadcast on raspberry pi"
Got it, thanks!
> questions about Peertube
I don't know either. So far my experience with existing instances has been rather good but I didn't consciously test the use cases you mentioned. I've wanted to publish educational videos for a while but the idea of feeding the big nasty beast just breaks my heart.
At some point (e.g. once I obtain patents) I hope to commercialize the processes involved as software/hardware instruments, but for now it's solely for my own practice. [2]
[1] https://soundcloud.com/thetanull/1to1-220409-03 [2] https://soundcloud.com/goomtrex/condenser-12-54
There is also a recreation of the scripts at https://github.com/NARKOZ/hacker-scripts
I added a pressure sensor to my desk chair (just like the ones built into car seats) and soldered that to a Zigbee door sensor. I now know sitting/not sitting. I then set up push notifications to my watch and desktop if I sit more than one hour to get up and take a walk. Furthermore I connected it to my hight adjustable desk that if it is in up-position and I sit down, it automatically lowers itself to the perfect sitting position. I had to disable the „if I get up, move the desk up“ function because it was just too much movement on the desk end.
I don’t wanna miss the too-long-sitting warning anymore and it is really useful.
I wrote it from scratch in Go with very few dependencies, so I can compile it to a single binary that should work on all platforms. It outputs .html or .tex which is then compiled to a PDF via Xelatex. Since Latex is pain to deal with, I wanted to generate pdf directly, but life got in a way so... it's not exactly a finished project, but at least I enjoy using it.
It isn't the elegant machinery you describe here as I'm quite unfamiliar with the technique you describe.
If I'm actively using it the feed list grows to about 35-40 000 at which point I find as many new feeds as I lose old ones.
I maintain a dozen categories of badwords, if any of those are in the headline it will be removed.
With many subscriptions things look quite different, higher frequency publishers start dominating the top of the newest list. The faster they publish the higher the standards I hold them to.
What is quite amazing is that some really terrible news websites use long titles that are highly descriptive. I have a good few of those, they get to stay around because the badword filter purges so much I hardly ever see them. For every 2000 bad ones business insider has a great article. It's a terrible website but their use of descriptive words in article titles is the best in the world.
The key insight imho is that the internet is much more of an echo chamber than people think.
As soon as you get rid of Musk and a few hundred other people, a few hundred companies, a dozen countries and a few thousand other topics you are left with a world of infinite other subjects. People are writing about stuff no one else ever thought of.
If everyone in the world is reading and writing about FOO it is absolutely amazing to get rid of FOO. There is no such thing as an important football match. (joking sorry)
Everyone is praising normality but you should really wonder who creates these norms. If they are good of bad people is besides the point. Musk says 1 something interesting per day I'm sure. For every 100 000 topics inserted into the collective we chose 1 then, by the tens of millions, we talk about it. Every day is Musk day.
It doesn't matter how hard you resist participating, eventually you will learn that space x launched a rocket. There is no avoiding it.
Autonomy is something fucking amazing. I imagine millions of articles are published per day. 99% things said before. What part should I want to read? The 1% with the most traffic?
You should get on the train to nowhere just like everyone else - they say. Stop wandering around on your own, you should get on the train just like me!
I'm not usually telling anyone not to get on the train. If people want to discuss "rss is dead" for the ten thousandth time, let them. They think they chose the topic themselves.
There is 13 billion years of history, 6000 sq km of earth, 7.9 billion people alive, 100 billion dead, 8.7 million species of plants and animals, 350 thousand chemical compounds, 130 million books since the printing press, 100 billion stars in the milky way alone. What to spend my time on? The Trump investigations? Really?
I'm sorry for not being very technical.
It's mostly just some useless commands that say stupid things, and stats collection for earning "achievements" and displaying leaderboards.
The bot was written in C# and seriously over-engineered to be completely modular. Every command and stats collector can be turned on or off in config. A running instance with all features turned on is available as https://t.me/Cubic0Bot.
For the others: You don't even need a transmitter to do some experiments, you can use just one IO Pin for this:
https://nerdiy.de/en/raspberrypi-send-fm-signals-by-gpio-pin...
Furthermore, you can use something like https://volumio.com/en/ build an RFID Box https://pilabor.com/projects/labelmaker/#products-to-build-t... (my daughter used this when she was 2 years old)
It started as a single org file for personal notes (and still is) exported to HTML. These days, it's a chunky org file, but hey if it works...
https://raw.githubusercontent.com/xenodium/xenodium.github.i...
- A tracking airsoft turret that would point at and fire at movement. Was coded in Processing.
- A world clock of digital clocks that synced with NTP and could be set to many regions when working with different timezones.
- A QFH antenna for receiving live satellite images via SSTV from weather satellites
- A core xy assembly with a peristaltic pump that can be placed over a frying pan to make fun designs of pancakes
- A screenshot tool that uploaded to a private site with a short code URL for sharing screenshots without relying on ott SaaS products
If the police come, I'll use the Constanza "Was that wrong?" defence.
A fun little drawing and writing game, I loved playing with friends and kids with pen and paper. During the pandemic I implemented a web version for us to play remotely. By now, thousands of games have been played (not only by me and my friends of course). You need at least 4 players (better 5 or more) to join one game for it to be fun.
https://draw.gerty.roga.czedik.at
(oh, and it is free and open source, of course)
Then mptcp came, and I just did use a socks5 proxy with mptcp, which handles fluctuations of the link quality much better.
Used it a lot at work tho, for VPN redundency
We used nothing as fancy as an oscilloscope, bought a new RJ11 cable, cut it in half and interposed the connection from the remote to the controller. We also used relays, just for the nice clicking sound :)
All the 3 apartments in the building were sharing the same wi-fi device, therefore I built a simple scanner to find all the devices in the network, connect them to the individuals I knew, and show the devices I found on the network in a simple website, which then I installed on my parents' devices as a PWA. The scanner would run in a Raspberry Pi I had lying around.
In the end it wasn't very reliable, the router kept failing occasionally due to nmap, and after a few failures we stopped using it, but it was a fun experiment for me.
* guess the gameserver tick rate based on network traffic patterns between game client/server (cs:go for example) and display it in grafana
* collect keyboard inputs while playing and display them as a heatmap on grafana
All of this for no real reason.
https://gigatexal.blog/pages/building-a-blog-from-scratch/bu...
https://gigatexal.blog/pages/blog-update-1/blog-update-1.htm...
It's not very fancy but it is for me. I know next to nothing about web/html and I wanted to do something myself than going with the really good ghost or other static blogging tools.
Never tried it, but given the way it works, you definitely need some output filtering unless you accept to pollute all harmonics of your channel (which might be licensed spectrum too, and interfere with services you don't want to interfere with in the first point)
https://psychomugs.github.io/gradcap
My wrist-mounted Spider-Man-inspired coilgun:
I totally absolutely enjoyed every minute building my own thing and I highly recommend it for the burnout developers.
Then got a book deal to create a series of gender swapped illustrated books ‘Gender Swapped Fairy Tales’ and ‘Gender swapped Greek myths’
It seems like a simple enough task but gets complicated in weird ways. For example - his can swap to her or hers depending on the context. And her can swap to his of him depending on context.
The idea is to show the biases in the original stories that you are blind to because you’ve been reading them forever.
Now I use javascript & html. The most used ones in recent past was my own timesheet log app. Html form submit data to Google sheet through Google script. Another page shows the monthly summary & details.
A telegram bot which logs my msgs as todo list to a Google sheet. I manually mark things done when done.
Many others at apps.bydav.in
I'm not a good player at all, and I've struggled with practice for years. But I have no problems playing (practicing) difficult video games, that require a lot of repetition (think Celeste).
I think I've identified two major reasons why I never enjoyed it:
1. Classical music notation (sheet music) is just awful. It goes against most modern principles of easy-to-grasp information design. So I've come up with my own notation that is much easier to read and can be generated from musicxml files.
2. Practicing takes too much decision making and discipline. If you want to make progress, you have to constantly remind yourself to practice the parts that you're not good at yet - this is a surprising amount of mental overhead and requires lots of discipline. So the app I wrote listens to you play via MIDI and keeps track of which segments of a piece you're already good at, and automatically gives you those you still need to practice more - zero decision making required. You just play whatever the app gives you and after a few weeks/months you're suddenly able to play the whole piece.
The app is no where near ready to be shown, but I'm confident at this point that the concept will work.
I've been planning a longer write up on this for a while, if you're interested in reading more about it, please let me know, that would be very motivating :)
"SaaS" in quotes since it runs in a small production setup with all the bells and whistles (ie. CI/CD pipelines, continuous releases, user signup etc.), but I'm the only user :-)
I'm a wine enthusiast, i.e. not a professional but interested enough to do a WSET2 in my spare time (I'll do a WSET3 when I find time some day). I like to/need to keep track of two things as part of my wine hobby: Wines in my cellar, and tasting notes.
Used to keep the wine registry in excel and notes in Evernote, however especially the excelsheet lacked features, like easy searches from a mobile device, and notes about the wines in my cellar (not tasting notes, as I have plenty bottles I need to taste but havn't yet, and I still need some notes on those to remember where the heck I got them from and why).
Also, WSET2 tasting notes a much quicker to do with the proper template, but copy/pasting text in Evernote became too annoying (again, phone).
So, I build my own app to have exactly the features and mobile friendly GUI I want. I'm the only user on purpose, because then I can keep building and changing features to be just like I want them.
Yes I know there are some "wine tracking apps" out there, like CellarTracker and Vivino, but they dont fit my needs. CellarTracker is closest to my needs but way too clumpsy GUI and not mobile friendly -- I don't have my laptop with me when I'm in the cellar to find a wine for tonight, I have my phone.
Will I every make up the time I spent building it in time saved compared to my excel/evernote setup? Nope, not even close. But it was a fun side project, and I like fiddling with the hosting/Ops part.
[1] https://en.wikipedia.org/wiki/WFUV
[2] https://rivermontrecords.com/search?type=product&q=big+broad...
I set this up for all my music in shuffle mode for my own radio-like always on streaming service via Tailscale.
To keep things simple, source code files are compiled into object files which are linked into an executable. Object files have sections (named array of bytes), symbols (either defined as an offset within a section or undefined) and relocations (a request to patch up an offset within a section with the final address of a symbol) while executable files only have sections. The linker takes all the object files, lays out the sections in memory, fixes up the relocation and writes out an executable file without the symbols or relocations.
With Ghidra I can reverse-engineer an executable and recreate symbols, data types and references between symbols. Then, with my modifications I can recreate relocations with that information and, once a range of addresses has been fully processed, I can select it and export it as a relocatable ELF object file.
Why? This allows me to extract parts of an executable as object files and reuse these by linking them my own source code ; I don't need to fully-reverse engineer these extracted parts, I just have to basically identify every relocation there was originally in that part. I can also divide and conquer my way to decompiling an executable by splitting an executable into multiple object files and recreate its source code one object file at a time, like the Ship of Theseus.
So far it works with what I've tested it with and I've been meaning to write a series of articles to explain that process in detail, but writing quality technical articles with illustrations on a topic this esoteric is very hard.
- My Ghidra fork: https://github.com/boricj/ghidra/tree/feature/elfrelocatebleobjectexporter
- My initial prototype in Jython (has a readme): https://github.com/boricj/ghidra-unlinker
Note: this works only with 32-bit MIPS, little endian, statically-linked executables. It can be made to work with other architectures by writing a relocation synthesizer for it, but so far I only care about decompiling PlayStation 1 games.I have my own lunisolar calendar and decimal time (with centidays and dimidays) so I produced a lot of code for that on various devices. I also wrote two chess engines and a hobby operating system.
And countless web apps, like one to read the daily/monthly top of HN and Reddit, another to host my pictures (on a cool domain hack), one to manage the batch jobs on my chess engine cluster in a rack at home that helps keeping the house warm in winter, and lately my own frontend to Bing API because I was growing dissatisfied with DuckDuckGo.
I usually go always to the same supermarket twice a week. I was frustrated that every time I changed something in my shopping list I had to mentally recompute the optimal path to pick up everything.
Now with my app I am able to build the graph of the entire supermarket (each node represents a rack with shopping items) and then given my shopping list it computes the optimal path from the entrance to the exit. It's a version of the classical travelling salesman problem
I was close to predicting/estimating blood sugar when I lost momentum and also had a few errors making up PCBs.
The videos look like this one: https://www.youtube.com/watch?v=1rdeir2-bVA
Creating a video is simple:
- think about the subject (usually during the week)
- 5 min: copy an existing video script and edit it to match the current subject
- 5 min: record the video with OBS capturing the web output
- 5 min: publish it on FB/LI/youtube/...
It uses a simple scripting language with actions that I can trigger by pressing a button. The script has custom commands that allow you to mount HTML/overlay the webcam video/show the webcam video as a thumbnail/play music/... And you can compose commands into other commands.
Here's an example script I used for the video mentioned in the beginning:
const script:Record<string,string[]> = {
Intro: [
`/name empty screen with overlays
/remove *
/volume 0`,
`/name empty screen without overlays
/remove *
/volume 0
/append div.hide-overlay`,
`/subs
How to quickly qualify leads
for premium outdoor structures
without a configurator
`,
`/intro

# Quickly qualify leads
## for premium outdoor structures
### without a configurator
/caption Tom Janssens / Owner
/wait 3s
/remove *
/subs
https://virtualsaleslab.com
marketeers of premium outdoor structures
activate & qualify leads
via online 3D configurators
In this video
explain you
a simple and easy way
to qualify a lead
without using a configurator`
],
Main: [`/remove *
/append img#bg.fullscreen[src="prices.png"]
/select #bg
/animate fade-in 3s both
`,
],
Outro: [
`/site https://**OBFUSCATED**/r/vsl/vsl/en/designer/index/ts-alu`,
`/remove *
/caption Tom Janssens / Owner
/wait 5s
/cfg https://**OBFUSCATED**/r/vsl/vsl/nl/designer/index/solar-de
`,
`/remove *
/outro

# https://virtualsaleslab.com
### tom@virtualsaleslab.com`]
};
export default script;
Update: Obfuscated some urls in the example script, as they are pointing to my test environment ;)For practicality: I wrote a flashcard app to use on the tube to help me learn French. I wanted a couple of things specifically: - it should be super simple to use on a mobile device - it should be trivial to add a new flashcard on the fly - it should prioritise flashcards I've got wrong more than I've got right - it should work offline, pushing back to the server once there's a connection again Code: https://github.com/alex-moon/clin
For fun: I wrote an app that tied a bunch of machine vision ML repos together to generate "explorable dream worlds" in the form of short HD videos. I wanted a simple, fun interface that would let me specify a schema/config for the next video, then hit "go" and watch it generate over the course of however many hours, including previewing what we had so far. Code: https://github.com/alex-moon/vc
The local branch of the company I work for has recently included a food allowance of 8 eur/day as a perk. I don't like / have opportunities to eat out most days, so I have built a little utility that fetches via a REST API the offers at the deli / grocery store on the way to my kid's nursery, and solves a knapsack problem to generate the most optimal shopping basket (i.e., closest to but not exceeding 8 euros). I extracted the API from the deli's website, as it seems to be something custom. Of course, I might not care about some of the items that the utility includes in the most optimal basket. To mitigate this, the utility iteratively refines the basket by asking me if there is something I want to remove, and then replaces it with the next most optimal items to fill up the remaining budget.
Another popular wine education is CMS (Court Of Master Sommerliers) https://www.courtofmastersommeliers.org/current-course-price...
WSET is supposed to be more focused on the production of wine, where CMS is supporsed to have more focus on service/serving (for waiters). Its details and I think perhaps more of a different in the lower levels.
I can recommend WSET. I had a pretty good knowledge of wine before I started, so I did WSET2 first. WSET1 is short and pretty basic, but very good for beginners and/or if you just want to have a taske before taking one of the higher levels. WSET2 is still beginner domain I think, since there is an exam but its not a practical exam (i.e. no tasting exam). WSET3 gets serious :-)
I was fascinated by the story of David A. Scott, who was obsessed with "bijective compression". It means compression programs where all files are valid archives, and moreover no two archives decompress to the same file. So no magic number file signatures, no checksums, no redundancy whatsoever. Scott felt that compression algorithms that didn't have this property were wasteful, and of course, in a narrow technical sense he was right. There are of course a number of practical reasons why we tolerate a little redundancy.
But he wouldn't let practicality stop him. He made bijective versions of many common compression algorithms. He made a bijective Huffman encoder (one where you'll never get "unexpected end of file"), a bijective arithmetic encoder, and even a bijective LZ variant. But most impressive of all, he made a bijective BWT version.
The Burrows-Wheeler transform is fascinating on its own, and it's almost bijective. It sorts letters in a text by their context, so that letters with similar context appear close to each other. In a strange vaguely DFT-like way, it switches long-distance and short-distance patterns around. The result is, in a typical text, long runs of the same letter, which can be easily compressed.
But the traditional BWT technically works only up to rotation. You get a rotation of the original string back when reversing it, but you don't know if it's the right rotation. You need to store a tiny piece of extra information, either the index of the rotation, or a single sentinel character known to be the last (or first) letter in the original string. Getting rid of that last piece of information seemed impossible, but Scott figured out a way to do it!
The result is that we have a truly bijective version of the BWT transform. Now I'm no mathematician, but surely that is beautiful? It's a true permutation now, that still does the weird low-order higher-order swapping thing, that you could surely analyse with many algebraic approaches that wouldn't work for the original.
Anyway, what I did was implement this transformation on the lines or pixels of an image. So you get an effect similar to the "pixel sort" effect that glitch artists were into for a while, but it's reversible. I guess it's not really useful for anything other than making glitch art, but it's at least a program that does something pretty unique, and which only a very specific kind of weirdo would have the skills and inclination to write (namely me).
https://github.com/ecliptik/ecliptik.github.io/blob/main/_sc...
A little rough on the edges so probably not ready for a ShowHN yet.
I originally built it for a now-ex-girlfriend, but I use it all the time myself to add a little spice to things like tweets or error messages.
The currently supported setup of Frigate alerts using homeassistant seemed to be very profoundly complex and I just thought I could use the Frigate API and wrote a small tool with Nodejs. It has been working flawlessly, including sending photos of events to my Android phone.
Anyway, cool to see you hack this, maybe try to tweak the power levels a bit so the neighbors don't have a reason to talk about it.
The process of building a dictionary of primitives and shorts was very much akin to what court reporters / Stenographers do to type fast, and was also probably related to my RSI given that I started my career out as a Stenographer. Something I regret in retrospect.
In terms of voice coding, things really have gotten so much better since then where we now have amazing free and open source options for text to speech, and we've also seen a proliferation of apps used to code via voice. I'm partial to Talon, though I don't do any voice coding today. https://talonvoice.com/. Github also just announced a voice to code copilot type thing, and at this point given the advances we're seeing in AI I'm sure I'll be okay if my RSI gets bad. This video was one of the things I watched and helped me in building the system, https://www.youtube.com/watch?v=8SkdfdXWYaI
I'm also building a video game, and plan on building many more. I'm writing it in a monorepo where I have a common shared foundation, and then apps using and building on that foundation. I believe in dogfooding my code, and have built a bunch of things with it towards that end
The thing I'm happiest with and use the most is a small and simple music player. I never could find a replacement Foobar2000, so I wrote my own. It runs nearly 24/7 on my PC's.
I've also built a breathing app after discovering that breathing exercises were like magic in terms of improving mood and reducing blood pressure. The one I built was modeled after https://github.com/jithware/brethap, and I mainly built it because it was trivial to do and Firefox kept putting the web tab to sleep. If you have high blood pressure, I 100% recommend exploring different breathing exercises.
I've also built two different GUI wrappers around image generators. The first app was built around VQGan+Clip back before Stable Diffusion, and it supported swapping the backends to change generators. I built it as a web app with Svelte, and it let me explore the images and auto-generate based on a theme or with a given sentence structure where parts of the sentence could be sampled from a pool. The second one was much the same, but it was built with my monorepo, it was built around Stable Diffusion, and I added an image-to-image component where I have a simple UI to draw on the input image through the app. The usefulness of this project is near 0 as there are better open source versions out there.
I also built a static website generator in Ruby for my personal website. I've since soured on Ruby though, and my website is no longer online. There are other things but I'll leave it there because this is already too long.
So around 5 months ago, I needed a tool to preview front-end (React) components whilst I create them for a personal project of mine. There were two options: Storybook or Ladle.
Storybook is the tool everybody knows. I've used it before quite a lot. It's very big, full-fat, supports loads of use-cases, etc.
Ladle comes out of Uber. It's very small, lean, and doesn't support that much. After trying it out for a while, it just gives me a feeling that it is an Uber engineer's 20% project to learn some new tech.
So I realised that I wanted something kind of in the middle. Something that's a bit more customizable and full-fat than Ladle, but something simpler, less intrusive, and less "framework magic" than Storybook.
This led me to create Exhibitor (https://github.com/samhuk/exhibitor) (https://demo.exhibitor.dev).
I worked on it on-and-off for a couple months, and it ended up being something that I'm quite proud of. It's not perfect, and supports only a fraction of what Storybook does, however for a tool made by 1 engineer vs the 20+ for Storybook, I'm quite happy about it!
If you want to take a look at the source code, here are some pointers:
- The relocation synthesizer for MIPS: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Processors/MIPS/src/main/java/ghidra/app/delinker/MipsElfRelocationTableSynthesizer.java
- The Ghidra analyzer that leverages this synthesizer: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Features/Delinker/src/main/java/ghidra/app/analyzers/RelocationTableSynthesizerAnalyzer.java
- The classes that implement the ELF object exporter: https://github.com/boricj/ghidra/tree/feature/elfrelocatebleobjectexporter/Ghidra/Features/Base/src/main/java/ghidra/app/util/exporter/elf
- The Ghidra exporter for ELF object files: https://github.com/boricj/ghidra/blob/feature/elfrelocatebleobjectexporter/Ghidra/Features/Base/src/main/java/ghidra/app/util/exporter/ElfRelocatableObjectExporter.java
I built it because I needed an easy way to set-up API endpoints that weren't implemented yet by some other team. After a while I open-sourced it.
wikicmd https://github.com/dhuan/wikicmd
Navigating through mediawiki to get pages edited all time requires a bunch of clicks. I wanted to be able to quickly edit wiki pages using any editor program instead of the browser.
I've only spent about 6 hours on this, but it helps me every day.
Back then, it involved an Arduino, the internals of a Wii MotionPlus (cost effective way to get the gyro sensors), a plywood frame, and the open-source 'MultiWii' code.
That first build never flew well, but soon afterwards it started to become much easier to build a very stable quadcopter, as all-in-one flight controller boards started to appear, along with more knowledge of which brushless motors, props, and ESCs worked well together.
This has since been extended with an algebraic/modular approach to building more complex textures and rhythms. So the aim is to create totally novel sounds, but the traditional waveforms tend to pop-up from time to time!
It has a frontend at https://trains.jo-m.ch/.
Edit: it's currently raining and the rain drops are disturbing the images a bit.
https://www.youtube.com/watch?v=STnnqonpcAU
And another vid at max rpm on the servos...
- Why ? As a parisian living in Belleville (poorest area), where artistes build things, I used to visit a lot of "artists studios". I have always loved this places. "J'aurai voulu être un artiste", in a way. I always thought that no photography or 360-photo would feel the Space, the immersive feeling.
Triumph had the 'Stag', I suspect this is much the same effect.
https://en.wikipedia.org/wiki/Triumph_Stag
(talk about problem cars...)
I wouldn't play at all with non-approved RF frequencies personally.
Sent you an email! I've been wanting such an ML powered RSS reader for quite some time. I'd love to help make it open source if possible.
Edit: “§ 97.403 Safety of life and protection of property. No provision of these rules prevents the use by an amateur station of any means of radio communication at its disposal to provide essential communication needs in connection with the immediate safety of human life and immediate protection of property when normal communication systems are not available.”
A python script that recursively searches through zipped files within zip files (within zip files...) to find files by name and content. The goal was not to unzip the recursive structure to the file system, since the unzipped files contained hundreds gigabytes of sparse data each. Instead it works directly on the file stream and keeps the memory requirements constant.
It talked to my laptop using MQTT and of course it was triggered from emacs using org-pomodoro.
I have built the database by scraping some data online, and have a database of 60,000+ locations. The attributes are built with some basic ML and text processing, nothing fancy. But this is sufficient for me to do this search: find places in Europe where I can do surfing and hiking with a temperature of less than 25 degrees.
I've recently started building https://responsebrain.com where I can add all my blog articles and automatically let ChatGPT generate responses to questions about my other product https://webtoapp.design
It's a pretty basic setup with a knowledge base you can feed anything you want (your blog articles, help center etc.). That gets put into a vector database and then I pass the related knowledge pieces to GPT along with the question.
I know there's lots of similar products out there, but none of them seem to allow manual editing of your knowledge base and they all seem to be focused on creating chatbots. I've adjusted the prompts to work best for e-mails.
Unlike most existing apps that only track what you eat, my app helps you figure out how much to eat to hit your target macros. Initially, I had created some Python scripts that worked well, but I found them inconvenient to use as I needed to be near a computer, edit the script and manually add ingredients to a dictionary. To make it more user-friendly/faster, I re-wrote it as a web app in Rust for the backend and integrated a free food database.
Now, I can quickly and easily add a list of ingredients I have at home from my phone and hit calculate.
Currently, I'm the only user, and the tool is designed entirely for my needs. However, I think it could be useful for others looking to plan their meals and eat healthier, which is why I host publically. If I were to build it for general public use, I would need to relax the constraints to allow flexibility on how close it can match your targets. I would also want to add more food sources, maybe the USDA database, but since I'm not in the US, a lot of the foods won't be relevant to me. Maybe if I get the time i'll work on it but for now it works perfectly for me.
You can check it out at https://www.macrosolver.com/. Let me know what you think!
I wrote a script to make Anki spaced repetition flash card decks with avatars and names pulled from the meetup API. I would use GitHub Actions to run the script a few hours before the event, then drop the importable deck into a Google Drive folder. I'd review the deck before the meetup, and then at the event, I'd not stress about names. I'd pretend to introduce myself to new people like I didn't already know their names, but I'd be able to make them feel very welcome when I remembered, or introduced them to others.
Why do this arguably creepy thing? Because I am really forgetful with names, and when I forget, I become reluctant to approach people, which comes across as less friendly than I prefer to be. But I believe using people's names is REALLY important to community organizing. When I know names, I am really great at using them a lot, helping others learn them, generously making introductions, and helping people to feel a sense of belonging.
It was the best community organizer hack I ever came up with, until meetup locked down their API and broke it...!
I wanted to have a display in my living room, which shows the temperature of all rooms in my apartment. So I used an Android Picture Frame. This is connected via WIFI, and offers FTP access.
A Docker service on my local in-house server grabs a random background image from a folder. Depending if we have day or night time, the picture will show satellite images from earth’s day or night view.
It then connects to my home assistant instance, and pulls all the necessary values. A SVG template is then filled with these values, and they are merged with the background image. The service then uploads the image to the picture frame, and it will refresh the image after some minutes.
The whole thing uses templates and config files, so it's easy to extend.
Unfortunately, the picture frame broke down since, and I haven’t had the chance to buy another one yet.
Discussed on HN here: https://news.ycombinator.com/item?id=21891919
Having said that, however, I think that they did go too far down some paths that I would have liked to not see it go down. I feel like them supporting so many use-cases came at a cost of usability. In addition to this, there is quite obviously too much framework-magic, causing obscure undesirable behavior.
However, it's still an awesome tool. Just a little too full-fat for some of my more simpler use-cases :)
I don't think anyone's claiming it deserves anything?
-- The maximum power output of a personal FM transmitter allowed by the FCC is 250 microvolts per meter at a distance of 3 meters. The range of the transmitter depends on various factors such as terrain, obstructions, and interference.
Assuming ideal conditions, such as no obstructions or interference, the range of the transmitter can be calculated using the inverse square law. This law states that the strength of a signal decreases with the square of the distance from the source.
At a distance of 3 meters, the signal strength would be 250 microvolts per meter. At a distance of 6 meters, the signal strength would be 62.5 microvolts per meter (250/4). At a distance of 9 meters, the signal strength would be 27.8 microvolts per meter (250/9).
Typical car and household stereos have a sensitivity of about 2 microvolts per meter. Using this sensitivity value, we can calculate the range of the transmitter for these devices.
For a car stereo, the transmitter would have a range of about 26 meters (square root of 250/2). For a household stereo, the transmitter would have a range of about 63 meters (square root of 250/0.5).
However, in reality, the actual range of the transmitter may be shorter due to various factors such as interference and obstructions.
That's what they do when performing catheter ablation (a medical procedure for curing cardiac fibrilation by destroying minute parts of muscle with electric current).
DC would work just as fine on this procedure, but due to electrolysis of water, oxygen and hydrogen bubbles would form, which could get stuck somewhere. Using a square wave AC quickly reverses the reaction every period, like you suggested for the moisture meter.
https://en.wikipedia.org/wiki/Catheter_ablation#Technique
I don't know the answer to your question, but it would be worth trying.
I created this while setting up a home trainer for bike training in my garage during the lockdown in 2020. One issue with home trainers, unlike biking outdoors, is that you don't get the benefit of the wind generated by your speed that cools you down. So you sweat a lot, and this creates dehydration. Not cool (pun intended).
The solution is to use a fan. But when you are lazy (and focused on your workout) you don't want to have to get up and adjust fan speed (and I don't have a remote for my fan, and it's much cooler to have it automated instead).
I built myself a small service to "disable" (work around) Spotify's hyperpersonalization by giving me the Song Radio as an anonymous user would see it. It's available at https://spoqify.com/ (with the name chosen that way so that I only need to replace a single letter in the URL of a Song Radio Playlist and it'll forward me to an unpersonalized version of it).
Now I'm starting with designing a small controller on a protoboard with an ESP8266 -- 12 faders, 34 buttons, 4 encoders, 26 RGB LEDs. By sending raw 802.11 frames I may be able to get this thing to work wirelessly.
I'm interested in your design, would you be willing to uplaod some pictures?
So I made my own. https://www.secretbatcave.co.uk/projects/stock-ticker-machin...
Its not strictly electro mechanical like the original, that was too far out of my mechanical design skills.
https://vanilla-lattice.mtassoumt.uk/
Totally deprived of any use, but very satisfying.
In theory, the tool is extensible. The first version used an e-Ink display, which of course requires a different way of communicating. So the docker service can upload either to a FTP, or can communicate via REST at the moment. I really only implemented what I needed at that time.
As an introvert, I don't like to bother people. When I'm in a quiet coffee shop or library, I turn down my phone volume, select a white noise track in Apple Music, and put my ear near the bottom of the phone.
So, I created the simplest app of my life: open the app, and it plays the sound of waves. If your phone is in silent mode, it won't play anything when the connection fails, even if the volume is high.
I posted it on the web, and many people didn't understand its purpose, thinking it was just another white noise app. It received very few downloads. However, it's the only app I made that I use every day.
Back then the game was very easy to cheat in because even though the map was huge, the client kept all of the objects in memory along with their positions all the time - and it was very important in the game to stay hidden from other players and to hide your stashes of objects for later use. All of these was available in memory for grabs and there was no anticheat.
So there were people who wrote cheats that just grabbed the positions of those hidden stashes and bee-lined through all of them, robbing them.
The server logged the position of static objects (like stashes) on startup and logged the position of every player every few minutes. So I wrote a very simple application that parses that log and puts all of that information (position of stashes and players) on a human-readable map. The admin could then select a player and track his journey. It was very easy to spot people running in straight lines from stash to stash, it was obvious they were cheating and should be banned.
After that I added some heuristics that detected these behaviours automatically and gave hints to admin on who to check. There were more abuses possible in the game later on that I also detected.
For example, there was a "dupe bug" which allowed a player to duplicate a backpack full of useful items and give it to their friend. It involved two players staying in the same spot, dropping the backpack on the ground, trying to open it up by two people at the same time, one of them disconnecting, etc. The backpack was duped due to lag on the database on server side.
I modded the server files to log the information that a backpack was dropped or picked up (along with a list of items inside it in order they were arranged). Then I modified my log parser to look for two players being near each other, dropping and picking up the backpack, disconnecting and reconnecting constantly and detecting two backpacks with exactly the same list of items in the same order they were arranged it (which was very unprobable to happen out of itself) - detecting this gave a hint to the admin to check these people out as possible dupers.
It's on my desk. And every hour it refreshes my cycling stats, reminding me that a) Wow! I build a cool thing that actually works and b) I did ride a lot on my racing bike, didn't I? / It's about time to go outside and ride some more. https://github.com/Marcel-Jan/StravaInky
I've written a couple of blogposts on how I build it: https://marcel-jan.eu/datablog/2022/12/12/strava-dashboard-o...
I installed linux for the first time in 1992 on my parents DOS machine. I had another partition for it. It was Slackware with kernel 1.2.13 I think. All off 5.25 inch floppy disks.
Setup wasn't so simple then and I was a UNIX Noob so I managed to set the swap partition to the DOS hard drive and overwrote the first 4MB or so.
The FAT filesystem's root directory and many others were blanked but not all files were lost. Norton tools and CHKDSK managed to get a lot of files back but many of the wordperfect documents were in the form "FILE0001.CHK" and no way to know what was in each one other than very laboriously opening all of them and trying to work it out from the contents.
Very fortunately I had an old backup but the problem was to know, out of all the recovered files, which were covered by the backup and which were new since the backup. If I could ignore the files that I could restore from the backup then I only had to load and rename the ones that were new.
CHKDSK couldn't recover the file size since that was in the destroyed directories. So you couldn't guess if some backed up file matched a restored one just by looking at size.
In the end I wrote some perl+shell to get the md5 of the first kilobyte or two of all the backup files and all the recovered files. I used this to match files and get a list of all the recovered files with no corresponding match in the backup. These had to be new files and since there were far less of these I could manually load up each one into Wordperfect, see what it was and give it a sensible name.
This program (don't have it anymore) saved my bacon and served no-one else but me. It took me from despair to triumph and that's why I like it so much.
That means something more sophisticated has to exist today and should be commercially available. Can anyone explain to what extent companies use this stuff in their interaction with customers, and how successful is it? (Somehow I still see AI still as one-off things people do for fun or AI being used to hype up rather mundane software.)
So I made a KVM instance which does one thing - login automatically, start Firefox, login with Selenium, then uses some kind of other Python desktop control contraption to press CTRL-S, tab-tab, save the web page to the Downloads folder.
Then, the python program proceeds to parse the HTML (with BeautifulSoup), extract the schedule times from how they are showed in some <div> or other (super weird ugly text format). Checks for changes over time and emails her what has changed. (So she gets a notice when her schedule changes and she doesn't have to periodically check in with the app.)
Finally converts the schedule to calendar format and publishes on a web site so the schedule can also be seen in the phone calendar.
It's been fun having a project where i can just throw in stuff i want to learn (started out as a go + go templates app, then turned into go backend + vue frontend from scratch, now go + vue with vuetify) and where i can just implement features i want (pocket import for saved links, gpt stuff, linking between notes and saved links/rss entries, ...) that are extremely specific to my use case and thus hard to find in anything else.
Scheduling the script to reliably run via Task Scheduler (Windows) was was its own project!
I attribute around half of the Japanese I still know to repeating cards incessantly one after another for months, few years ago:
I remember going to an arduino hack group once. When I went to introduce myself to the organiser he cut me off mid-sentence with a flat "I know who you are Lio" and a unblinking stare.
Now, in tech circle we often have people that are a bit "rough" when it comes to human interaction so I make allowances.
I think what he meant was I recognise you from Twitter or something. As far as I know we get along fine and I've had absolutely no issues with him before or after.
All the same, it freaked me the fuck out at the time. :D
A Stream Deck XL button runs a Python script that creates a timestamp for ongoing video and audio recordings which I use for live stream and podcast chapters while I'm streaming or recording.
Different buttons on the Stream Deck create markers with different labels, e.g., Introduction, Break, Marker, etc.
But as it's hard to name markers for every section and you have to go back to the recordings to infer what each section was about, I added a dynamic marker script that trims audio around a marker with ffmpeg, locally transcribes it with Whisper, and appends the transcript to the marker, so I can easily guess what the marker title should be without having to scroll and watch the video.
If you are an individual person or a not-for-profit organization, and your usage of this software is entirely non-commercial, you may use this software under the terms of the GNU Affero General Public License, version 3, summarized below and reprinted in full thereafter.
you have effectively created a new license and it's not completely clear to me what that new license even means exactly, except that obviously a company should stay far away from it.
With regular AGPL, there is not a problem for a company to use the AGPL licensed software, it "just" can't offer Tivo-ised experiences or a website running modified AGPL code.
Though no doubt most of us know them from all the parodies¹, those signs are real.
I've considered rewriting it to make the code better many times but every time I sit down to do that I think to myself "it works just fine, why touch it" and leave this idea for a while :)
BTW the idea of the game is to combine cubes with the same number and color until there are only 4 left.
As someone who's worked in telecom for a number of years, the fines for broadcasting I've seen issued to individuals are insane. Not just radio but wireless amplification too. Different European country though.
Always check the legislation in the country of operation. Emergency frequencies are held sacred by the powers that be.
I hooked a raspberry pi zero up to it about 7-8 years ago, and streamed the audio to a custom app on an iPhone, so he could play a record and listen to it anywhere in the house or even outside while cutting wood.
The hard part was making a nice vector animation of a record player that animated based on the state of the playback.
That ran for about 7 years; when I was researching replacing the boiler with air-to-water heat pump, I had to prove the house could be heated with lower temp water, so I changed to an ESP8266, added a platinum temperature sensor, a webserver, data logging, and ran a bunch of experiments with lower supply temps to see how the house would react.
https://imgur.io/a/VM7nD74 (that chart is entirely SVG, the whole content screenshotted was generated on the ESP)
https://external-preview.redd.it/AxGrpEpxqpATGsX7MwsoSRrD2ie...
So I created this tool that opens an MR off the branch I'm on. It opens up my favorite editor and asks me for a title and a description in the same way that git does for commits. It splits it in first line for title and the rest for the body.
It's very simple but I'm very happy with it. Now I extended it to list the open MRs, show the tickets in the current sprint, etc...
Nobody else in my company uses it tbh, but I don't care because it solves _my_ problem and I love it.
I recently bought a drone for photography. But the video looks so good that I end up taking a lot of video, too. Video is new to me, so the raw files keep piling up in my "in" tray. I will have to learn to edit video, one day, or send them to a pro to edit for me.
I decided that the least I could do is watch the videos, organize them, and trim them to just the interesting parts. Saves on disk space.
I wrote a bash script to help me:
- Loop over all videos in a dir.
- Play each video.
- Extract the clips I want.
- Tag, rate and organize the clips.
The script opens each video in two MPV players. One is full screen and unscaled (watching 4k on a 2k screen means the video appears zoomed in to a 2k region). This is for pixel peaking. I can quickly check, at a glance, the raw video quality. Another MPV window acts like a PIP, taking up a quarter of the screen, and showing the whole video scaled down.
If a video is DLOG, a LUT is applied to MPV to show the video in a more natural colour (raw LOG video looks grey before it is processed).
Hacking this together, without a plan, I use simple msg boxes, on top of the playing videos, to control the process. Better than having to flick back and forth to a terminal window.
When I see a good place in the video to start my cut, I press the "Start" button. An input box pops up, prefilled with the current time of the player, e.g. 00:00:09 if the video is 9 seconds in.
I watch some more of the video and notice some messy, jerky camera movement starting at 38s. I press the "End" button, and another input box pops up to capture the end time of the clip. I change it to 00:00:37 to exclude that jerky part.
Now, in the background, ffmpeg is called to extract the section of video between 9s and 37s. I use keyframes so that video does not need to be re-encoded. It sets the real start time to the nearest keyframe before the start, and the real end time to the next keyframe after the input end_time. This means the output video is always a bit longer than I chose. I can trim those few extra frames when I use the clip. Because we don't re-encode, the extraction time is near instantaneous.
A preview of the clipped file is played back at high-speed.
If the source video is long, and contains more content I want, I continue playing until I see the next clip I want to extract.
When I finish with a source file, I am asked to give a star rating (1-5) for the videos and then to choose tags. For these I make use of the rating and file tagging extended metadata (xdg). I can select any number of pre-existing tags, and add new tags. Some metadata tags will be added automatically, such as frame_rate, resolution, and colour_profile.
Now the clips are in the output dir, and I choose to send the original file to the wastebin. The next video in the source dir starts playing, and the process continues until the dir is empty.
Then, using Dolphin file browser, or Digikam, I can click on a tag and instantly see all clips under it. I can see all videos that are 50fps and DLog color. Or, I can filter all clips tagged "sea" and "sunset", or "mountains" and "sunrise".The result is a neat pile of trimmed and catalogued video clips. Ready to be thrown into some YouTube video.
Only problem, now? I'm more interested in refining the bash script, than I am in learning to use Resolve to make a finished video.
Sounds like you're about to start a Radio station for the nation.
I am using Asterisk on Debian that calls my python script. The analog phone adapter auto dials when the receiver goes off hook, because rotary dialing sucks that much and the answering extension is chatgpt role playing different characters based on prompting.
I think it is neat. I need to work on better voice synthesis and improve latency a bit still, but it is a nice toy.
It colours each document with the same colour. You can see how two documents overlap, semantically - it's pretty awesome for Job Role/CV overlays for example, or educational resources and exams - a mix merging of colour shows both equally discuss something... missing colour means one document doesn't.
Since it's semantic, depending on the embedding, the gaps in-between spots make a lot of sense intuitively, and you can sometimes even see how the conclusion of a document ends up in a different semantic space to the start as such (even though there is no time data, you just notice the later topics are semantically in a different space to the earlier ones for the same document)
[1] Similarity based, NLI based, GPT-raw etc.
In small scale there is more work maintaining the automated setup and calibrating the sensors than it would take to do the measurements and dosing manually.
Also had descriptions, so wrote a simple regex based scorer that classified the descriptions by keywords that I valued. Spat out a hitlist of likely candidate houses to go inspect.
...
Also wrote a basic wedding registry that allowed people to scan our list of things we wanted and say they had purchased them, or were interested and it gave a list of others who might want to go in on a group purchase. No privacy, but it was only sent to friends. Circa 2004.
...
Finally, wrote a diary and calendar tool which took emails with very simply structured subjects and built a static website showing travels through Europe in 2002. Could email from any net cafe with any email address and it would update the travel diary, or a website with a calendar saying which city we were in and how we were traveling to the next one. Friends could elect to get immediate updates or a daily summary. Purely static built from cron and email archives. Worked like a charm.
...
More recently, hmm... as treasurer for various choir things I've written a ton of little commandline tools which give very quick access to data and allow tracking who owes what and logging their payments into a database, and tools which generate email invoices and receipts.
Everything else is either opensource or work stuff. And I don't code so much these days either, though this week I started diving into Python to create tools that help keep data for our marketing team up-to-date without manually copying stuff around, and some maintenance work on code I wrote 15 years ago which is still running really nicely but needs some updates.
Made my monitor an "ambient tv" by reverse engineering the bluelooth lights and sending them pixel colours: https://www.reaminated.com/reverse-engineer-led-to-convert-m...
I also wanted to use ChatGPT over my own files and documents. Whilst my personal system is a bit more complex, created an end-to-end tutorial of my learnings to get started with using your own docs: https://www.reaminated.com/run-chatgpt-style-questions-over-...
I then posted a little video of it to /r/flightsim (https://www.reddit.com/r/flightsim/comments/id7vmy/head_trac...) and it turned out to be something others wanted, too, so then I polished it and released it as a full app (SmoothTrack). It's been the most successful side project I've ever done.
So that's how I started this project. Get the door to be unlocked. Bought a new lock, with electromagnetic locker in it, hooked up a Raspberry Pi to command a switch for 0.5 seconds and then wrote a server application for RPi that does the command. Wrote another Android app, that connects to RPi, sends the user/pwd via WiFi, the server verifies if all is OK and then unlocks the door.
Then started expand the tech. Get new users to be added by an Admin user (so roles were implemented). Used as DB SQLite in RPi. Wrote my own protocol on top of crypto libraries so communication is secured with a 4096 RSA key over WiFi. Then one day a little accident happened - my daughter had problems with her stomach and the door could not open fast enough for her to go to toilet, so a little soiled pants came out of that event :). That prompted me to start expanding even more and invest in a little LoRa PCB attached to RPi so the communication now can happen from distance instead of just few meters from the door.
Then I wanted to expand the usefulness of RPi. So when we go to vacation a little pump is pumping a predefined liters of water on our flower pots. And to make sure those do not actually get too little or too much I hooked also a number of webcams on RPi to watch them. And since I was at this step and I wanted to flex my muscle in computer vision so another camera is on our front door and automatically will try to recognize people going through its field of vision. This last step is still refined. So this is where I am with this project. Still in development, pretty sure I'll have more ideas in the future I'll attach to that RPi.
There are lots of examples online of people doing this sort of thing. There's a simple example at https://github.com/pablodo/mpd_gpio/blob/master/main.py
Even a chapter of a book about it: https://link.springer.com/chapter/10.1007/978-1-4842-2406-9_... (I just found this, no idea if it's any good).
And also an IR version at https://www.ziemski.net/rcmpd/
[1] https://embit.ca
When UNIX is your platform you don't need a complex UI framework with thousands or millions of lines of codes, and you get to reuse knowledge you've already built elsewhere.
I need to write more about it
Now our task is to swap out this entire database for something like it, but not exactly the same. The output becomes the input to this new matrix. The individual program persists, but everything is the next generation. With a little book-keeping, the programs do our will...
The built-in collection either didn't have songs that she liked (from the '40s), or they weren't clustered together, or were mixed up with other songs.
I could load a flash disk with her playlist to plug into that player, but it wouldn't know what to play at what time (calm songs in the early and late hours, peppier numbers on other days, festival specific numbers on some days). This was a big deal. I can even change the playlist from elsewhere (a script automatically mirrors the playlist that I maintain on a server)
Bluetooth streaming is possible with the device, but not an option for my MIL ... that would require her to learn to use a cellphone.
I haven't asked around, but I assumed nobody else out there had both the skills for reverse-engineering video games in general and motivation to work on this game in particular. I started reverse-engineering the game with Ghidra and quickly realized that "this game's code is kind of held together with glue and duct tape" (quoting a speedrunner of this game). It's quite the understatement: the code's a complete tangled mess.
I realized that with my current tooling and knowledge there was no way I could hope to complete this decompilation project by myself. I wanted to divide and conquer the problem into smaller, reasonably-sized pieces, but I just have one big executable and I can't just split it into pieces... or can I?
So I tried to innovate my way out of this mess. Ironically, perfecting the unlinking process and making it usable in practice has taken a long time, but it was intellectually rewarding and progress was tangible, so I did not lose motivation along the way.
As for the reverse-engineering of the game itself, my biggest achievement so far is managing to unlink the archive code from the game into a relocatable object file and writing an utility that leverages it to extract files from the game data archive. That sounds complicated, but with my tooling I just need to identify and annotate about 30 functions and global variables used in that part of the program to be able to export it, independently of the rest of the program. Then it's just a matter of writing some C glue code, compiling it to a Linux MIPS program and using QEMU user mode emulation to run the utility, without ever having rewritten that archive code in C or figuring out how it actually works.
IMO, Vim + Markdown is one of the best ways to take notes, brainstorm, or just explore ideas. However, I found the questions of "Where should I put the notes in my dir hierarchy?" and "How do I find the notes again?" and "How do I ensure I have my notes across all devices?" to be inhibiting.
I wrote a CLI "journal" tool that says "forget putting them into folders", dumps all the Markdowns into a single Google Drive folder, and instead focuses on providing really good search.
Now, in my day to day, I can do "journal new some-meeting-with-dan.md" and I get a fresh Markdown. I can also do "journal find" to search by name, date of creation, or tag, and then open notes in either Vim or as rendered HTML in Chrome (for copy-pasting). Behind the scenes all the information is just encoded in the filename (so it becomes "some-meeting-eith-dan~2023-04-23T22:10:23~tag1,tag2.md", with no extra DB needed).
I'm also now trying to rewrite the frontend as a Charm TUI, which is another whole fun growth path!
> All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.
So it seems at best there is a need for a middle man who gets the AGPL licensed version that can then propagate it further under pure AGPL.
We freaked out when we were able to increase the frequency from 1Hz where we visually could see the calculation proceed via LEDs, to thousands of Hz and "instant" calculation.
We had to physically hit the manual begin-switch with great force, in order to prevent the switch from not going cleanly from 0 to control voltage, when we operated in the KHz clock frequencies.
The goal was to have a platform that ingests the commonly enormous video files from old tapes, automatically cuts them, tags them based on content to make them easily searchable. My focus was on discoverability of scenes hidden in those long video files. The search bar would also randomly suggest tags to search for.
At some point I tried to work with a large video digitization provider and the video splitting ended up being too expensive to be viable for the proposed business model. Now it just auto generates thumbnails and lets you tag videos manually.
The project includes a business dahsboard that allows digitization businesses to send videos directly to customer accounts (deliveries need to be accepted).
Currently, I only use it for my own videos as well as for my MIL.
ryp
If ~/passwords.txt is there, it will be encrypted. If ~/passwords.ryp is there, it will be decrypted.
The cool feature is that it checks to make sure that the password you typed in the nth time you encrypt it is the same as the 1st time. This protects you from inadvertently encrypting it with a typo if you check/update your passwords many times.
There's a lot of weirdness that launches each day, but also lots of interesting-looking stuff.
In short I can control my phone’s audio playback using my retro radio headunit using only a wired connection and no Bluetooth.
My schematic and source code are available at https://github.com/ansonl/FordACP-AUX
I made a tool that tracks the current and historical prices of all sailboats in the world to look for possible good deals.
I made a website that let me track my student loan payoff (since I had 30+ different loans) that showed the total payoff as a big red thermometer. I also would track the dates of payments and used that to estimate the total payoff date
I made and open sourced an attendance tracking site for a local school that allows students to come and go throughout the day, but needs to ensure they at least showed up and returned before school let out.
I made a tool that would determine the most efficient way to build damage per second on each hero in a moba. It used linear optimization to calculate which items to build and in what order to get the highest DPS.
https://foundrytechnologies.com/relay.php
One of them has been outside the front door showing messages to visitors and exposed to the Texas elements for all that time now - still going strong. About 2 years ago I replaced the plastic case, which was looking a bit warped.
Sold a few too - though not enough to scale things up. Hardware is hard.
Deployed applications:
Analytics, Object Database, and WAF.
Deploying shortly:
WSGI app and templating system.
In germany its also legal to use plenty of bands in the RF Spectrcum with up to 750Watts (and potential more).
We are also allowed to do CB Funk in Channels 1-40 without anything and up to 80/85 (forgot details) when you register with Germany.
So your statement reads more like you are not allowed to do anything in germany. Its hard to believe to disturb stable systems just because someone is doing a little bit of FM on some known frequencies.
- Pulled down applicable YNAB savings envelope balances and future income calculations from a Google Sheets spreadsheet (which included stock prices for determining RSU payouts) to know how much cash we'd have for down payments at any time in the next 12 months
- Allowed us to either give a house price and have it output when we could afford it, or give a month and tell us how much we could afford if we bought on that month
- Do budgetary analysis of what the monthly payment would be, given fluctuating mortgage rates and estimated insurance from scraping Zillow/Redfin
- Calculated transit times to my office and my wife's office using Google Maps
- Allowed for swappable "scenarios" for all the above to show what would happen if we wanted to sell our current place first and then buy, buy and then sell, or buy-renovate-sell, so we could evaluate all options. We ended up going the buy-renovate-sell path in reality, and it was a huge stress relief to have hard numbers showing us the money was going to be fine.
- Output several months of cash reserves for each scenario after all transactions were done, so we could know if we would cut too much into savings
- Output a yes/no decision based on all of the above to keep us grounded and help prevent over-reaching for a house we couldn't afford - basically enforcing rules on ourselves
Have you written anything on the development of this project, or is this something you'd consider? I would love to build something similar, and the idea of combining old analogue technology with modern tools and integrations- especially PBX- is quite intriguing.
Recently I built a public facing website for that, if anybody is curious: chess.braimax.com
I'm still using livejournal.com social network nobody cares about today and when I was really into common lisp I decided to build a cli client to it. What makes it cool is that it's just markdown files locally and the client works almost like git, you can even pull and push posts. After I wrote it I was able to pull all my posts since 2007 or so from the service and have them locally as markdown files, any updates would be synced.
The other thing I've built mostly for my self is a notes taking service https://dabdab.org which allows to take notes the way I want it. What was cool about it was that I was able to almost reinvent django or rails but in go, so everything is fast, but still compile checks. From the product side I've managed to get to the same level of comfort one would get with github issues (markdown, image upload etc).
Both things have 1 user at the moment (me) do I think that counts :D
https://github.com/dorfsmay/emailFiles
There's nothing extraordinary about it, it's not far from a standard spam bot! What's interesting about it is that I've been using it for more than a decade with fairly little maintenance.
- A build system that is simpler and easier to use than Gradle. It also has a much better rendering of progress and output for tests when they fail. I mostly use it to run tests, actually. Supports parallel incremental and cached work.
- A Kotlin Scripting runtime that exposes a high-level UNIX shell-like API along with many other useful utilities like printing markdown, tracking progress of long operations (including hierarchically), working with files and remote programs over ssh and many other things. We have almost entirely replaced bash with it.
With that out of the way here's some more ridiculous stuff:
In 2016, I made a browser based AR party game where you'd fight kittens falling from the sky by dancing with vegetables in your hands (CMYK was easier to track using the webcam). I have some photos here: https://goo.gl/photos/g6Dp8GLDbuuhT1TRA
From a technical PoV it was exciting (running AR, in a browser, in pre Pokemon GO, pre WASM times!)
I also made a simple photography lighting tool, replacing professional lights with computer/tablet/phone screens (facade.photo). I put it in an old wardrobe bought in a thrift store on Brick Lane and during my startup launch. Results: https://goo.gl/photos/RZ3fCRcScYSGr7aG6
Ah, I also made an AI-powered voice assistant in 2014. The tagline was HTML5-powered voice assistant, as AI wasn't really _the_ buzzword then, but _HTML5_... oh yeah.
There is also a telegram bot that can show me the latest camera image with vacant places highlighted.
I guess I shouldn't be. Even letting them know you were fully aware you were breaking the law, most people would see its intended purpose -- to bring a little peace and comfort to a very old woman -- and have their own compassion kick in.
YMMV but I'm guessing you'd hear something along the lines of "Oh,... well,... (shuffles feet) ... just turn it off, then". Many of us have elderly people in our lives we wish we could provide some comfort to and most of us know we're headed there (if we're lucky to live that long). You know, assuming your 20m radius FM transmitter didn't, say, cause some cataclysmic event/knock emergency services offline for several city blocks, etc.
Put another way, while some police actually will pull you over and write you a ticket for going a couple of miles (km) per hour over the speed limit, most won't waste the brain power/physical energy/thermal paper to bother enforcing it.
Kinda sorta worked ok...just in time for her to stop sleep walking.
The way it works is it generates an NFA for a rule. You can define sets of sounds, some of which can be multiple characters long, and also define distinctive features, which allows you to define how sounds change by adding or removing them, but also allows you to match groups of sounds based on combinations of distinctive features. It builds up these ad-hoc sets of sounds and produces a prefix tree, which it uses as a template to build the NFA. Finally, the NFA is converted to a DFA for performance. It takes a while (the console app is much faster than the browser demo), but the rules run many, many times, so they need to be fast. It's essentially a special purpose regex engine. I'm working on bug fixes and some enhancements for now, but it basically works.
Would love to discuss the topic some more! I don't often meet people with that same interest in lighting that want to build their own tools.
The Pi has a 5TB hard drive attached with perhaps 1000 videos or so. The app has a schedule and plays the videos according to the schedule. It starts up in the morning, plays tele-courses, moves on to old TV shows, an afternoon movie, after school shows begin around 3:00 PM, a comedy show around dinner time, an evening movie, some late-night content, then the Indian head and "We Will Resume Broadcasting Tomorrow Morning...."
It fills dead airtime by choosing randomly among (literally) thousands of YouTube short clips I have on the drive — or showing a title card indicating when the next show begins.
Partly it's a fantasy — to have my own "channel" with my own scheduled content — my fantasy station.
Partly it serves to put on content I would otherwise not be inclined to pull up, double click and watch. It adds the serendipitous element to TV watching that I miss before streaming. The movie "Charly" (1968) just came on last night and I am sure I have not seen it since I was a teenager — had to stop what I was doing and watch a few scenes I recall vividly.
Today's lineup here: https://engineersneedart.com/UHF/
(Since the schedule is in JSON format, it was easy enough to make a web front end to display today's schedule.)
For years now it's the only mobile game I play, just about. The game took off a bit, but the core is still for me.
It has improved pretty much all my skills. Fabrication, embedded software/controls, system integration, operations processes, research and learning and so on. So far it’s been my most challenging personal hobby project.
It was a weekend project which I used for several weeks before sharing it on Reddit. The feedback was so good I decided to make it public.
The picture frame secretly ran Android under the hood. Which meant I could replace the app which showed pictures pulled from the manufacturers server, with one which pulls photos from the NASA website. Fortunately they left ADB enabled with root permissions, so it was trivial to replace their startup app with my own. All the source code is public here: https://gitlab.com/prbs23/mars-photo-stream
Asterisk is extremely powerful and reliable with good documentation. Because so many companies use it, I knew if something wasn't working that it was definitely on my configuration. Once you have Asterisk running on the LAN, you can you use any VOIP softphone app to connect and make "calls" to your scripts for testing.
I bought an analog telephone adapter (ATA) to connect the phone to the LAN as well. At that point, the ATA is the bridge between the PBX and the physical phone and it can now make and receive calls (to destinations reachable by the PBX).
If you want to make your scripts and devices accessible to the "real phone system" (PSTN) you can hook your ATA to a phone carrier (some ATA support this with a secondary port) or have asterisk connect to an external provider. I have not done this step.
There is definitely a bit of steps involved, so it would make a good write-up. A lot of potential to do some fun things with it.
I just put pause on a project because i couldn’t figure out a revenue model: mappedby.com
The recipes are stored as free text and the ingredients are parsed out of the text so you can just copy paste most recipes or record them the exact same way that your old family recipes were written down.
The trains look very clean from the outside. I do wonder how loud is it, to live so near the tracks.
Not used by many people, but accomplished what I set out to: an extension that is accessible easily via keyboard shortcut at all times, that allows me to visually (open graph images, screenshots, thumbnails) search any bookmarks saved to Chrome.
The search is super-quick, and it has a bunch of other keyboard-shortcuts to quickly navigate my bookmarks.
Unfortunately, I didn't know who she was, so my first encounter was having a seemingly random stranger stop me on the sidewalk and ominously declare:
"You didn't have a beard in your picture, Matthew."
> Yes, *technically* it is illegal.
Oh how many phrases start "Yes, technically" in my life.The law is an interesting beast. I know nothing about the law in India as it relates to FM band transmitters but I suspect that the law predates the common availability of adapters that one might use in ones car to add an input to a stereo that lacks such a highly technical circular hole for such purposes[0]. Once these devices gained wide adoption due to both their utility and -- more generally -- the fact that operating one is usually so benign that they can be difficult to discover let alone actually cause enough interference to warrant them to be seized.
The intention of the law was to prevent someone from operating a pirate radio station/give exclusivity to a single license-holder for that frequency. Since these devices don't violate the spirit of the law, the governing body finds it easier to carve out an informal exemption rather than explicitly write one in. It can also be tricky to correct a law that has a very valid reason for existing but may have cases where total enforcement isn't realistic[1].
The law may not have caught up to the reality on the ground and the legislatures answer to it is "enforce it when the interference is enough that someone notices." One might imagine a world where something akin to TV Detector-like Vans[2] drape the country-side in a dragnet to catch all of those pirate FM-input-devices but that usually only happens if there's a substantial amount of tax revenue to be gained ... to pay for the vans.
[0] I had one of these in the 90s (in the US, where it's not illegal if designed correctly) that connected my Discman to my ridiculously sad factory radio which lacked both external input and even a cassette deck.
[1] I do very little with regard to radio communication (if that isn't obvious) but I'd imagine most lawmakers do even less, so now you have to bring in experts to figure out "what's an acceptable amount of interference in this specific use case" and "how should a device like this be restricted." Not that government isn't famous for wildly wasting money or anything but I'd imagine the thinking is that it's not worth the effort to correct.
Amiga computers have
- a main processor (MC68000 or higher),
- a bit blitter, which can perform memory various operations in memory (using 3x source and 1x target, it can AND, OR etc. them),
- and a Copper, which have own "program", it can interpret 2 type of instructions: WAIT for a scanline position (4-pixel precision), and COPY value to a specified regsiter.
It was the name, which made me think: "Copper" is coming from "coprocessor". Well, it can run WAIT and COPY instructions, but the program's time-scope is somewhat restricted, the program is running every screen refresh cycle only once. Is it possible to write a program for Copper, which is doing some more, like animation?
I've generated several color bar frames for Copper, which adds up as a bouncing bar, and as the last instructions, I've added a COPY instruction, which sets the address of the Copper List to the next frame (the last one pointed to first frame).
So, it worked, the bar was bouncing without any support from the processor (besides initial generation and setting of the Copper List address first time).
Blitter and audio DMA is fantastic, it's a big help that the processor just puts an order to a hardware and it executes, but Copper is a degree more bigger magic, it can make things autonomously, which I was demonstrated.
Called it The Intersect because I was and still am a huge fan of “Chuck”.
It sped up my client projects so much that it killed my hourly income.
Now there are lots of systems that do this type of thing, but at the time I was very proud of that system. It was nice to be able to focus on web project from a purely data design back approach.
---
Another one is https://shellshare.net. I use Linux for a while, and from time to time someone would ask my help with something. If you ever tried debugging a problem in someone's else terminal over the phone, you know how frustrating it can be. So I built it as a way to share a read-only stream of your terminal with a one-liner command.
It's been a while since I used it myself, but there are some people that use it for teaching in universities.
Eg. "Divide my current USD balance into 5 levels of descending orders where the first order is at 5% discount from the current price and every level after that is at a 10% discount." Set it and forget it or run it again with different parameters if the market changes.
By the way I have a quick expansion for most TLDs and for the Swiss .ch “cheese” sounds rather more apt and easier than the real one in my head :)
So, I created https://laterball.com: a web app the algorithmically determines the best games of the past 7 days without score spoilers, to let me (and you) know which games are worth spending time watching. There was also an associated twitter bot at https://twitter.com/laterball which occasionally tweets when there's been a high-quality game until the recent Twitter API changes.
Technical stuff: the back end is a Ktor server hosted on a linode instance which pulls statistics data from an API to determine the ratings. Factors used to determine ratings include goals (number, timing, swings in score, comebacks), xG, wins or draws against the odds, cards, and a few others.
https://www.fcc.gov/media/radio/low-power-radio-general-info...
Looks like India doesn't permit it, but is looking at doing so (at least, for some purposes):
https://trai.gov.in/notifications/press-release/trai-release...
I created a React based version of Wordpress for developers.
I turned it into an open source framework so that other people can use my work and build on top of it. It comes baked with Next.js, Tailwind, and a bunch more.
It’s currently a work in progress, but I’ve been receiving great feedback from the dev community.
I haven't found the exact law in India, but looks like maybe it's legal for personal usage of FM provided power of transmitter is under 500 mW?
FM transmitting for private use is completely legal for UKW frequencies between 87.5 and 105 MHz and transmission powers lower than 50nW [1]. You can buy perfectly FM transmitters for your car, etch
[1] (German) https://www.autozeitung.de/fm-transmitter-bluetooth-nachrues...
The last person in the chain can disregard the extra "conditions".
But this only works if someone distributed it under (only) the AGPL in the first. In the specific case with the software we are talking about now, that is not the case. It was originally distributed under this almost-AGPL.
But yes, the wording inside the AGPL makes it extra confusing exactly. It reads like those test where the instruction is "before you do anything, read all the questions".
In retrospect, it was totally worth it: I reached a decent amount of fluency in listening comprehension and used the tools to create a Japanese course for others, which became popular on ankiweb: https://ankiweb.net/shared/info/911122782
I used AirTable as a backend and UI, added boxes with a room, box number, barcode and contents details.
Before beginning I printed barcodes for the first 10 or so boxes. I used thermal shipping labels, sliced them into 3 stickers with 2 barcodes each and slapped them on corners so every face had one.
Then I just packed like normal and when a box was full I took a photo of the contents from the AirTable mobile app, scanned the barcode and jotted a note about the contents down.
My local machine was pinging AirTable every few seconds to look for new boxes with photos and would then print out 2 full size labels with the photo, box number large, contents and room name which I then put on 2 sides of the box.
Arriving was amazing, every box had a destination (room) so no double moving. Every box had contents on them so no opening boxes until you are ready. Plus the AirTable made searching for an item and it’s containing box trivial.
But yes, if you look at high-speed Pi GPIO with a Rigol it looks more like an EKG readout than the thing you might see on a logic analyser. Smoothing it enough to feed a line-amp is very lossy.
After I left the country, this has had the wonderful side benefit that I can still follow along with everyone's game, and has been instrumental in me staying in touch and connected to my friends, so that when I come to visit on vacation it's like I never left!
I bought a house in my very early 20s. Roommates of mine finished the third floor with no permits. Went to sell the house ten years later and the location it was in required a U&O inspection. My realtor told me to lie, apply for a permit and pretend I just did the work.
Instead I called the local building inspector and said, “Hello my name is xxx and I’m calling to confess.” He cracked up laughing, came to the house immediately to look at everything and told me I was fine.
About 3 days before the eclipse, I decided which site to visit and ditched the other hotel reservation.
It worked well. My wife and I each saw our first total solar eclipse!!!
There's one coming up in 2024 too. Maybe some enterprising soul would like to expand on the idea and create cloud-coverage forecasts for the entire path of totality?
Otherwise, I will enjoy the fun of figuring it out for myself some day.
I figured you’d have to be exceptionally proud of this. I don’t find this specific, yet extremely useful skill, to be common among reverse engineers.
Though you’d wish it was!
https://www.amazon.com/s?k=fm+transmitter&ref=nb_sb_noss
This is what he means, not some bigger pirate radio situation
Eventually, I decided to build my own. I 3D printed a case and trigger for an air sprayer can, created some electronics with an ESP32 and RF trigger, and wrote my own "motion detection" logic - this time with an ultrasonic sensor, which works much better in the dark.
Now, the cat knows that a meow or paw will get him sprayed, and my wife and I can finally sleep!
I also built an air filtration system for my 3D printer, a level checker for my water softener, and a custom keepsake box that only opens with an RFID chip that you can read more about on my blog: https://www.mikebuss.com/blog
I haven't touched the UI since then, its ugly but it works, I've tried allocating time to make more modern version and even started refactoring it a few times with a few friends in our spare time, but unfortunately finding time next to full-time jobs and family is much harder than it was 10+ years ago :)
I've never advertised it anywhere except shared with friends and used it on some forums in the past, but it slowly grew to 10k registered members and almost 200k uploaded pictures. At this scale (~100GB of data) its very cheap to keep it online since its using very small amount of resources on dedicated servers where I host some other important apps with regular off-site backups, but if it ever spikes and becomes problematic financially it will at least give me more motivation to make something more serious out of it or just slam ads onto it and call it a day (worst case scenario, not a fan of it).
I tested different control schemes and thrust firing plans, added support for different types of thrusters, errors in sensor readings, atmospheric drag depending on altitude, weird anomalies in the earth's magnetic field, simulated bit flip events and hardware lockups (I left the internal watchdog out of the hardware lockups which is probably not realistic).
In an effort to stress test my simulator I ended up writing a genetic algorithm solver for thruster, magneto-torquer, and reaction wheel placement on arbitrary craft bodies with different mission plans and let it solve it.
I ended up designing a physical circuit board matching the simulator, flashing the board with the same code that was running in the simulator and it worked! I roughly made an approximate cube sat (10cm^3) (had a mechanical engineer friend design me a frame and manufacture it for me) with some small cold gas thrusters out of pressurized CO2 cartridges, controlled by solenoids, and placed by my genetic algorithm.
I dropped it off a cliff that was ~600ft high (best I could do for a "zero gravity" environment that was away from people). It was able to completely arrest its angular rotation before slamming into the ground which is better than I was expecting.
Would consider sharing how you set it up? I’d love to do something similar!
Been running like a champ for over 3 years now, which has been the most pleasant surprise. I'm used to ecosystem entropy causing things to break.
I documented my adventures in a 6-part series: https://ajpierce.com/2020-01-04_safe-to-wake-pt1/
Was this in March by any chance?
She still attacks the door loudly when playing with her toys at 5 AM if we forget to confiscate them though...
[1]: https://github.com/manpages/issues-legacy [2]: https://github.com/manpages/tar-spoon/
I did consider adding a "max finding" mode of some sort, but that's never really been my use case.
I tried using VLC instead for video playback (I think the more accepted way to play video from Python now) but when VLC completes showing a video there is a visible flash that I cannot figure out how to get rid of.
I should point out though that it doesn't "stream" — you'll have to find some other solution for that. The Pi is a dedicated "player" hooked to a dedicated TV that is always on, always showing what the Pi has to offer up.
I made a raycasting engine to learn more about it and I’m in love. It’s the most clever thing ever. I can’t believe I have a 3D effect without using a single trig function. The math is so simple you could run it on a 286. Raycasting feels like a magical hack. It has no business being so ridiculously simple for what you get!
I’m taking it a step further and integrating a real-time map editor so you can modify a map as you play.
I’m not sure where to go beyond that, but I’m having a ton of fun.
I run it on my NAS so my RSS reader can find it as long as I’m on VPN. Now I only need to visit NetNewsWire for all my news!
Is this a quote / reference to something? If so, could you let us all in on what it's referring to?
It runs on our home router and functions as the primary DNS server. If the record name matches a regex the DNS request is forwarded over a VPN to a DNS server in the target country. Any other requests are forwarded to my ISP’s DNS. If the response is a CNAME then the A record name is cached so that follow-up requests are also forwarded over the VPN.
Before returning the IPs in the foreign DNS response /32 routes for the IPs are added to send any home network traffic for them over the VPN.
This means that any client on our home network can transparently access GeoIP locked sites. It’s worked for around 8 years with no modifications.
The gear and testing it was very expensive, I wanted to make my own but didn't know how to sew - but quickly found the "cottage" industry of lightweight and ultralight backpacking gear and fell in love again. Now I loved the trail and the gear, but I was also broke.
One of my first non-visual basic programming projects was building a scraper for a handful of backpacking forums' used gear sections - I found that I was able to acquire and test the gear I wanted at a fraction of the cost this way, as well as find buyers for the gear I was ready to cycle out.
While I did build this for myself I eventually realized that there were so many good deals and people with good gear looking to offload it - but the forums and the communities were so fractured it made it hard for others (just like it did for me). I ended up building the whole thing (again) as my first foray into playing with Laravel.
It's still up and working - thousands of people still using it, maybe some of you would also enjoy it... [0] (no ads, no affiliate offers, ever)
* Note, I'm aware some of the "source" forums are broken/no longer scraping properly, will be updating it soon.
[1]: https://www.alextoussaint.com/2021-04-28_How-I-built-an-ultr...
[2]: https://hackaday.com/2021/05/15/a-phased-array-ultrasonic-3d...
I live in the US and had a 1991 Acura Legend with a six disc CD changer in the trunk (it was ahead of its time in a few ways) and have recently had a 2014 Honda Accord with a single CD player in the center infotainment area
I write a lot of modules and SDKs, and regularly consume them in my own work. Comes out great.
Lots of folks ignore my work. I won’t bother speculating as to why, but I’m fine with that, as everyone that depends on my work means I need to take them into account, when maintaining. If I’m my only customer, then I can do whatever I want. I write stuff that I need.
Publishing as “classic” public open source, forces me to do a good job, so that means that really significant parts of my projects are pretty much “worry free.”
You can see my stuff in my GH orgs (I don’t really have much in my personal repos).
I was astonished when I couldn't find what I needed - surely this had already been solved by someone else! There are things like inotify and watchman, but they don't provide process information about the events.
I haven't figured out how to distribute it quite yet because the API it uses to collect file system events isn't allowed in apps distributed on the app store. I recently made a short video demo, though[2].
[1] https://blog.codysehl.net/2023/Understanding-the-XCode-Build... [2] https://www.youtube.com/watch?v=EPhMWXzoBWY
I've also been putting a lot of work into a React component that renders a nice looking SVG Circle of Fifths, and just recently got to a point where I felt I could call a release "1.0.0". This has also been a really educational project and I'm super proud of the component. It's a little basic right now, but it looks very nice, and I have a lot of cool features planned.
It's licensed MIT, so if this sounds like something you'd like to use in an app, you can check it out here: https://github.com/epiccoleman/react-circle-of-fifths. I'd love any feedback, issues, etc.
Edit: Oh, I just thought of one other thing - a single line of code I wrote which frequently gives me great joy. In zsh you can define a function called `command_not_found_handler` which gets invoked whenever a command ... isn't found.
Mine says: `figlet lol, $@`, so whenever you make a typo like "gits status" or something, you get a big "lol, gits tatus" printed out, which is amusing.
[1] https://marketplace.visualstudio.com/items?itemName=tanftw.v...
https://github.com/vexorian/dizquetv
Personally I want almost this. I want to rotate the TV shows my kids watch in the morning but I don't want to start part way through a show (the one part of the old analogue experience that I don't miss at all). Difficult to square that circle.
So you should be able to do something with that.
I found the best weather for me was in Antofagasta, Chile, but I never did anything with this knowledge :)
Unfortunately it was all built on an OpenShift gear on the free tier, so it's dead now.
I made a web app that lets you note down words that you come across and might want to learn, and then generates a learning order of those words based on a variety of frequency lists, as well as linking offsite for sample sentences etc. It allowed me to pass the JLPT N1 with just 6k known words (people usually need 8-10k)
vocab.c-ehrlich.dev
It's kind of weird, but it's fun to make and serves a decent purpose.
So I designed and built a wirelessly (Qi) charged battery pack for it.
https://partsbox.com/blog/wireless-charging-for-a-hp-25-calc...
After a year of use, it's totally over-engineered and has so much energy and so little idle power consumption, that I have to remind myself to charge sometimes, the thing lasts for months.
I'm the only user. There are many people who wanted to buy one, but the step from a hobby design to small-scale production is a big one and it simply doesn't make business sense. Especially with Li-Po batteries being difficult to ship and potentially a hazard. I guess maybe if I found a manufacturer that would be willing to take the design and manufacture it on demand, taking over all of the shipping/support issues…
From time to time I see a train with graffiti on it, but usually they remove such things very fast.
It also hosts a small set of personal Go packages. For this, it implements a git server, module proxy protocol, issue tracker and change tracker. At some point, I want to differentiate the code review UI with nice-to-haves specific to Go, but haven’t gotten there yet.
I’m playing around with compiling the whole thing (written in Go, of course) to WebAssembly that runs client-side, along with server-side rendering for the initial page load. This is mostly to make iteration easier and faster for me.
It also lets people leave comments or reactions to blog posts and such by signing in via a URL rather than username+password.
Unfortunately, the physics of this work out so that every playlist generated is composed of Nickelback and “Sweet Caroline” covers.
By that I mean I have no documentation, no series of technical articles describing this process and no public, non-trivial project to demonstrate it in real life. I do have a currently private decompilation project that uses this successfully [2], but it's not currently public and it's nowhere near finished.
Also, I only wrote a relocation synthesizer for statically-linked, 32-bit, little endian MIPS ELF. That's a fairly obscure platform, I'd expect most people care about mainstream instruction sets like x86_64 or ARM64.
If you can suggest a forum where people would be interested in this, I can drop a message there and answer more in-depth questions if you want. So far I've worked on this all on my own and I'm kinda out of the loop from the rest of the reverse-engineering community.
[1] https://github.com/NationalSecurityAgency/ghidra/pull/5010#i...
Any resources that you particularly liked when learning, or is the stuff I will find when Googling “raycasting engines” all good enough?
Surprisingly, I haven't found a good tool that addresses this, so I spun up my own. I didn't want to force my friends to download another app just so I can get paid back so I tried to make it mostly SMS based.
You text a picture of the receipt to my Twilio phone number. It triggers a serverless function that runs AWS Textract to itemize the receipt, then stores it in a database. Twilio responds with the unique URL for the receipt and I can text that out to my friends so they can claim their own damn items.
Win win, I get the points AND I finally get paid back.
A little USB sound card is passed through to the VM and it's been rock solid for about 2 years now. I use it exclusively as a Spotify chromecast type thing that cost me about $3.50 in parts.
I would love to do something like this for my kids. They're constantly begging to watch Youtube, which I limit pretty heavily. Something like this could allow me to stick some pre-approved videos into a queue, and maybe even make an allowance for a half-hour of some of the ... dumber stuff that they like at a certain time of the day. I could also slip in some Kurzgesagt, Mark Rober, content that they may not otherwise be that interested in to surreptitiously educate them ;)
It took me about a month of full-time, hard, day and night coding (including weekends) to finally build a solid piece which can handle some crazy CPU workloads of tensor math.
I am currently working on a todo list that stores all info in the browser only.
As for EC, I can only correct it if it’s too low. If it’s 100 points below where I want it, I dose from two containers of pre mixed nutrient concentrate. They’re in separate containers because they’ll actually precipitate some of their constituents if they’re combined at high concentrations, which is too bad (it would be nice to use only one container).
The pH sensor I use is apparently lab grade, but only cost around $70 CAD. It has been holding up just fine for close to a year now. If I were doing this on a larger scale, I think I’d go for one that’s a bit more expensive from atlas scientific. They seem to stand by their products and claim their pH probes will operate for years if taken care of.
My EC sensor was quite a bit more — something like $150. I forget where I got it, because I had the idea to build this maybe 10 years ago and that was one of the first components I picked up! Looking around it seems like you can spend quite a bit less now, and it seems like they’re durable.
The app also extracts data from documents, such as urls, keywords, and references, and generates a downloadable pdf report with annotations and extracted data.
This way I can focus on what I want to watch and not worry about how I will watch it.
You're invoking LLMs, but "benevolent AGI" was what got invoked originally. Don't conflate a hypothetical AGI with an existing LLM. Anything of the scale required to create a hypothetical AGI is going to be expensive. Period.
Is grandma really going to use a hypothetical AGI any better than she's able to use Spotify? Come on.
[0] https://www.youtube.com/watch?v=nyqykZK2Ev4
[1] https://kylegabriel.com/projects/2020/06/automated-hydroponi...
I plan to open source it. have to clean up the code. Built with python flask, GPIO and a small custom PCB that interfaces pi with the off the shelf relay boards.
Todo - flutter app - 3D printable enclosure to package the entire set. - basic logo etc.
More detailed instructions in the script but the general idea is: 1. When a channel publishes a new video IFTT puts a text file with youtube link in Dropbox 2. Script downloads audio from youtube 3. Justcast.com free tier to turn a Dropbox folder into a podcast feed
Solved it locally at first: unzipped the pez file, searched for the smallest objects, and scaled them up. It might look a bit funny (that ball which had been made much smaller would have been scaled up), but people could again fix it using the prezi editor.
Used this manually to ‘fix’ other peoples presentations, in which they send me their pez file, I would ‘solve’ it and send it back (usually: they would invite me to be a co-author, I would make a copy, fix that and make them editor to that copy). Used to do this quite a lot on the prezi forum.
In the end automated it completely: made a service in which one could upload a pez file, my NAS would decompress it, fix is, compress it again, and mail a link to the corrected pez file.
Software is defunct as problems have disappeared (and changes to prezi way made it no longer work).
Incidentally not my first prezi product: I guess that was the Android app that made it possible to view a prezi on an Android phone or tablet, ways before Prezi themselves made the Android app (I think they already had the iOs app, not sure). [That app ran in more then 50 countries, but that is another tale;-0]
After struggling through that for a few semesters, I decided to automate it. Started out with a script that would take course IDs as input and check for openings every few minutes (used selenium/beautiful soup I think) then text me via twilio whenever a seat was available. The next semester I updated it so it would even sign me up for the course automatically.
Also came in handy to get myself and a few friends into the coveted wine tasting class our senior year.
It has since exploded into fully fledged CRM with all kinds of features you can choose from. I originally built it for myself to keep track of everything expenses, recurring invoices, ... At some point a freelancer saw me working in it and asked what I was using.
Told him what I was working on and he became my first customer, since then it has spread through word of mouth.
It's really cool to see it used like this! The resulting images are really neat as well!
Simple Weekly Meal Planner [2] - a very simple, free PWA for deciding what you want to make for dinner each week and tracking all the ingredients you need to get from the market. I built this because meal planning is one of the most annoying parts of adulting. It was built with Svelte and Firebase.
Audiobook Locker [3] - a Tauri-based desktop app for managing your audiobooks. Think calibre-for-audibooks. I created this because I wanted a nice way to keep track of which audiobooks I'd completed and which to read next. It uses Svelte for the UI and Rust on the backend.
[1]: https://fonner.gitlab.io/shared-slides-clicker/ [2]: https://simpleweeklymealplanner.com/ [3]: https://fonner.gitlab.io/audiobook-locker/
So I made the worlds most basic iPhone app with React Native, that grabs the data from HealthKit and shows it across a percentage of the year.
Simple but effective.
I haven't seen anyone do it yet. Maybe companies like Splunk and Elastic will take a lead here. I am happy to engage, advise and contribute if there is an open source project around this. Has anyone else seen something remotely close to this?
- Running bots periodically - Receives webhooks - Handles OAuth - Provides a shared DB - Posts updates to and receives commands from Slack
It's not very innovative, but super helpful. I love that I can deploy a new script so easily and already have all the tools I need so I can just focus in the logic. A few bots I have running:
- I run a site with thousands of articles, so one bot checks 10-15 articles per day for spelling mistakes, broken links, broken images, poor formatting, etc. Tasks to fix these are then posted to Notion. - Monitor Hacker News and Reddit for mentions of the sites/apps that I run so I can respond. - Sync calendars between apps without having to make them public - Gather financials and reports from various sources for bookkeeping - Monitor all of the servers we run and sync their status to Notion
Probably at least half of the automations could work on something like Zapier, but this is more fun and I get a lot more control over them.
One of my dearest parts of my system is the knowledge, task, and time management part. There's many things to improve, but I'm really happy to where I got.
TLDR; custom org/markdown/hyperlists-inspired document syntax powered by tree-sitter, go library for accessing the data, command line utility with interactive task manager (built in with a custom React-like component-based TUI framework), Neovim plugins and integrations.
This short video explains more than I can in a short time: https://gist.ro/slang.mp4
Extra - Thank you Org mode: I do my work in a terminal emulator, so (obviously) my editor is Neovim. Two years ago I allocated a few weeks to learn Emacs and to review Org mode, I was hooked on so many concepts, and I loved it. Didn't like Emacs through, it's just too slow for me, and Elisp felt very meh if not yuck. There's quite a few things that I liked so much while testing Org mode, and that I tried to port.
I wanted to be able to quickly rename files with my text editor (using keyboard commands), so this lets me do it. Plus I share the app online for free.
Video Hub App - https://videohubapp.com/ & https://github.com/whyboris/Video-Hub-App
I started it just for myself, but it ended up so good I spent several more years improving it as people kept buying it (up to almost 5,000 purchases since I started).
Also wrote a couple of dev tools for myself (sharing via NPM too) - https://www.yboris.dev/
Instead of paying $125 for this ... (https://www.bhphotovideo.com/c/product/1337050-REG/pluto_tri...)
I decided to build one using an Arduino. I probably spent more than $125 on the project, but I ended up buying a lot of hobbyist electronics parts, soldering gun, etc.
I learned a bit about what Arduino can do, learned some baby electronics.
And I have some nice pics of hummingbirds.
https://flickr.com/photos/184781347@N05/52648636091/in/datep...
https://flickr.com/photos/184781347@N05/52325370300/in/datep...
It was so much fun to build and a hit at the party. I wish I had the opportunity to build more things like it :)
Took a while to find the architecture, but it's still an unfinished ambitious project. You can probably spend forever working on HTML and CSS fixes alone...
If you actually handled the payments, you could introduce a small upcharge that way, but even there it might be a hard sell, and the amount of bullshit you'd have to deal with to be able to scrape a buck or two off each transaction might mean the juice isn't worth the squeeze. But still, if you could scale it enough, a buck or two per transaction could be big money!
Growing up I had an alarm clock that you put a CD into and it would fade in the CD instead of an alarm noise. I really loved this, though having to wake up super early for school everyday, I will admit that I developed negative associations with the first track on many albums.
I created an improvised version of this a few years ago: a timer switch hooked up to a light, a cassette player and a water heater. When the timer went off all three would turn on. This worked but wasn't great cause nothing faded in.
I remodeled my bedroom last summer and wanted to replace this alarm with something more sophisticated.
I used a Raspberry Pi to do the following: - At the set alarm time, access my media server and generate a playlist of 10 random songs. Start this playlist and slowly increase the volume. - I bought a separate module to hook up to a lamp that points at where I sleep. This module lets me slowly turn up the brightness of the lamp as the music volume increases.
The water heater is hooked up to a timer in my kitchen now. But I just finished building an arduino based wifi switch, so once I get it integrated, that switch will get turned on 5-10 minutes before the alarm is set to go off and heat my water for coffee.
I built a dashboard for all of this using HTMX. It lets you set the alarm time, snooze, play arbitrary playlists, adjust the light etc. I also added a weather widget and I have a JSON file of all important birthdays in my life, so it tells me whos birthday it is when I go to review the weather.
Something that HN may appreciate, I have it setup so when I ssh into the Pi, I get dropped into a tmux session where an instance of emacs is running with the actual alarm code being executed inside of it. This makes editing and trying the new functions sort of like a lisp machine. You get dropped into emacs and can tweak all the scripts and test them in a sort of live environment (you have to restart the server to update the dashboard but everything else is 'live'). I have a dream of rewriting this so it really is a lisp machine and everything can be `c-x c-e`'d to run but I doubt I'll ever get around to that.
I would also like to integrate motorized blinds and open them up when I wake. I'm still researching this, if anyone has recommendations.
https://trains.jo-m.ch/#/trains/350
https://trains.jo-m.ch/#/trains/3224
https://trains.jo-m.ch/#/trains/4045
Etc
pH: https://www.dfrobot.com/product-2069.html
EC: https://www.dfrobot.com/product-2565.html
Water temperature: https://www.adafruit.com/product/381
CO2: https://www.adafruit.com/product/5190
Air temp and humidity: https://www.adafruit.com/product/3251
There are others but I’ll have to dig into it! I think you could spend less on alternatives, too.
As a result, I wrote a (Chrome only) Web extension[1], which monkey-patch the WebSocket object, so I could 'plug' or 'unplug' them by simply clicking the extension's icon. So far I'm very happy with it [2], and can finally have multiple tabs of the same page without my 'reference' tab refreshing itself while I'm working on CSS.
[1] https://github.com/MarcMonchablon/toggle-hmr
[2] It gets the job done, even if in some case (such as the Zola static site generator), where I had to put the link to the plugin's code in the index.html, otherwise the code would be injected too late.
Most recently, my partner and I were using Anki to learn country flags but found the user experience to be annoyingly over-engineered and kind of stressful. We just wanted to be able to sit down and go through 5 flashcards while microwaving something or go through 100 in a day. With Anki it always felt like I was messing with some algorithm if I stopped early or didn't do my required number of cards for the day. Plus we were finding it annoying that the flash cards with Anki always seemed sorted. If I was looking at Albania's flag and had no idea about the next one I could guess it was maybe Algeria, etc.
So I built a python app that will tear open .APKG files and extract relevant information (currently, due to the file spec, it's specific to this because the notes are not consistently formatted but could be reused for whatever). It'll unpack and rename the images based on the media file and, in the case of the country flags deck, spit out a JSON file that matches the "challenge" (the image) to the answer.
Then I had ChatGPT build me a simple front end with HTML and Javascript for going through them at random and hosted it on one of my websites for the 2 of us to go through whenever we want. I'm working on doing the same with top-level domains and country codes! Turns out APKG files are a great dataset that happen to just be shoved into a somewhat over-engineered (in my opinion) file format and shoved into a software that, while great, doesn't feel conducive to casual learning where I don't have specific needs or dates the information will be come relevant. I just want to know these things not be a prisoner to them while I learn them.
I thought of a tablet app, but the stakes were too high, so it wound up as a laminated paper. You can read about my design decisions here:
It's decent. In some cases it's a bit clumsy when they try to explain mathematics in natural language, but we can't always have pretty Latex-rendered math functions and graphics. =)
So I built some hardware to interface with the SeaTalk network, the AIS radio (and a modern GPS) https://github.com/johnboiles/Helm-hardware https://github.com/johnboiles/Helm-firmware
And a Python proxy running on a Pi to pass messages back and forth across the network. https://github.com/johnboiles/NMEAProxy
And an iOS app that could drive my autopilot https://github.com/johnboiles/helm-ios
Since my proxy spoke the NMEA standard, you could also hook up with other apps like iSailor and get all the sensor data + gps + AIS data. https://apps.apple.com/us/app/wärtsilä-isailor/id398456162
To my knowledge, 0 other people have ever used any of this but I've always been proud of it :)
One of the side projects I work on is a scoreboard that displays MLB scores. It's highly configurable -- you buy the size panel you want and a Raspberry Pi, install the software, and you can configure it to display games, standings, and news headlines for your favorite team or division.
The problem is that the hardware is purchased by the end user, so it can come in many different sizes. I think we officially support 6 or 7 sizes right now, and each panel can be a chunk of change if you get a nice one. If we wanted to test on every device that means I need to shell out 50 bucks x 7 sizes, plus Raspberry Pi and wiring adapter, so not insignificant for a hobby project. Instead, I wrote a drop-in replacement emulator that makes it super simple to emulate any size panel across a variety of display types.
The most advanced display adapter spins up a minimal webserver and serves emulated images over a websocket, meaning you can display your panel over the network on pretty much any device with a web browser.
I write about it quite a bit, if further interested: https://blog.ty-porter.dev/categories.html#emulation-ref
Is there anything you know of that's linguistically interesting about it besides what I can learn from Wikipedia?
* Links between Markdown files “just work” (both when viewing the Markdown source on GitHub and in the final HTML version of the site), including anchors
* Posts are automatically tagged based on directory structure (e.g. all files in “posts/linux” are tagged with “linux”)
Bonus: my entire site hot-rebuilds on my 12 year-old netbook in under a second (with a few tweaks that I should probably publish a new build for).
I developed a 'transport' for Mulesoft, that would allow XMPP based communication, and relay that to my phone either by sms or email, and vice versa. At the time the communication were Jabber based and almost everything was through that, so this worked out quite nicely.
I consider removing the restart feature (or maybe just for her) because she kept restarting whenever she missed just a single note
I'm also on esp32, and have been wanting to write more using the native esp-idf tooling. I'm comfortable with Arduino but now that I'm getting into things like sleep modes and low-level IO, my code is becoming a patchwork of Arduino pinMode and ESP-IDF gpio_hold_dis functions...
They run as a mesh network, so you don't have to be in range of the base unit for it to work.
Regular radios don't work well for this use case because the terrain is very mountainous.
Currently looking into making one that can be attached to a dog collar to allow for geolocating the animal.
The original I played on my friend's phone was just that -- a phone game, so making sure it works on my phone was a priority :)
I don't have an Android but last time I tested it was playable even though the cubes were bigger than I'd like them to be on some screens.
I've made an offline version for myself in the past to play while traveling by train. Copying the contents of the .js and .css file into the HTML file into <script> and <style> tags was enough. I wonder if I can make it easier for other people like you by storing it somewhere on git...
P.S. Here's the source if you want to create an offline-first version yourself: https://github.com/Kiryhas/memechain
Heh. I drive a 2002 Chevy Suburban (don't laugh, I have a strong aversion to spending money on new vehicles) and it lacks an AUX input, so to this day I use one of those low-power FM transmitter adapters to pipe my phone's audio output to the vehicle stereo. They are amazingly handy little gadgets.
Is there a reason besides preventing commercial use that you don't just have a PDF link on your site?
Well, if you use my branch, I think I cleaned up everything, I think. Reccurance rules are pretty weird anyway.
I definitely recommend using platform.io though, if nothing else, it's easier to pull in forked libraries with.
Ahh, a single .html would probably work, too, sounds way easier!
I downloaded Termux, installed git and python3 and now your game is running locally on my phone with "python3 -m http.server --bind 127.0.0.1 9000" :)
I know it has no value, but I can't stop using it.
https://chrome.google.com/webstore/detail/personalized-chatg...
Thieves didn't bother with codes, they would just climb over the gate or tailgate someone else.
It only fired once (outside testing anyway). But that one time made the whole endeavor more than worthwhile.
So I wrote a webapp that I usually myself constantly now, it's very basic. I enter a habit I want to keep up and then visit the site everyday and click the "done" button when its done. It also has a calendar so I can see how often I've been doing it because not every habit is to be done every day.
I started this for exercising but i'm not using it for very basic/stupid things. One example is cleaning my glasses. I would never remember to clean them and I'd occasionally realise I'm viewing the world through a layer of grime. I now click "done" every day and the world looks crystal clear.
I guess it's just gamified habits a little bit and its working really well for me. There's a ton of habit trackers out that but I never found anything simple and quick to use.
There was even a chuckling group of people in the background when they mentioned "veggies". This was in Toronto around 2011.
It uses Embeddings to gather thousands of articles and compare against each other. Then uses a relational graph to combine those into collections and uses an LLM to create a succinct summary, quote, map, and other info about the topic.
It lets me the news for the day within minutes instead of endlessly scrolling.
I CitiBike a lot around NYC and this gives me (and my friends/coworkers) access to the full station history
Conversely, it wouldn't make a lot of sense to predict that it will always be as expensive as it is today.
Well, I guess "pennies" is a radical prediction. Cheap, anyway.
Yeah, you went the extra mile spinning up a local server :)
If the trip you're taking is not a long one, you can just make sure to load the page while you still have reception. The game doesn't make any AJAX requests or load any resources after that and prevents the default 'pull-to-refresh' gesture so if you don't refresh the page accidentally, it'll stay available.
My long term vision was to open it up to others and mine the data to determine what the ideal weight, tempo, resting period, and exercises were for a particular body type. I'm just a little too ADHD to commit to it and keep a day job.
On a serious note, you're welcome, glad you enjoyed! :)
Yes, let's make it so anything short of world-class creative talent (if that, even, if "AI" keeps advancing) is something that's of no monetary or social value, then wonder why people don't spend more time creating stuff. You're not motivated to play violin in your bedroom for nobody, or make paintings to hang in your own closet because nobody wants them? Or, there's no need for you to build this kind of great thing for your elderly relative because an AGI can do it instead? And now you're a couch potato struggling with depression and wondering what the point of living even is? Quelle surprise!
It's as if solipsistic intrinsic motivation is shit compared to having others want or need what you can do for them, and like maybe we need the latter in order to be healthy. But no, let's race toward further reducing our value to others as fast as we can, what could go wrong?
It's not quite as simple as your solution, but otherwise works really well.
I actualy use it at least twice a week to retrieve content I bookmarked, so I'm happy to have created such a tool.
The app: https://raphaelsty.github.io/knowledge/?query=bayesian
The Github: https://github.com/raphaelsty/knowledge
As VIP customers (the entire restaurant knew us both on a first name basis, we always tipped generously [e.g. $20 on $40 of food], we often received preferential service from staff. One of our waiters was actually a young man with a budding tech interest, who, after considerable encouragement, mentorship, and a quality boot camp some of my former coworkers enjoyed, is now a software engineer making several times more income than he made as a waiter.
We were very pleased with this arrangement in all but one way: while we could talk to several of our waiter friends who were staff members of the restaurant to get a table without a reservation even when it was 1 table short of being packed, it often was packed, or our waiter friends were not working that night, and we did not like waiting in a noisy, crowded lobby.
I picked apart the reservation website and found a very simple, wide-open API. I quickly hacked together a script to make a reservation with a single GET request to my own site, with reservation options in URL parameters, then created Samsung Routines such that when I arrived within 100 feet of my friend's house between 3pm and 9pm, it would automatically send a properly formatted GET request to my website, which in turn made a properly formatted POST to the API, and then it would also immediately respond to the incoming text confirming the reservation. Before I'd even made it to his front door, we'd have an ETA, so we could decide on whether to start a movie, play some split screen diablo, etc. I'd then get a text a short time later, and we'd leave for TRH. Upon arrival, we'd walk up to the counter, mention our reservation was called up, and proceed to be seated immediately regardless of how busy it was, or whether any of our waiter friends were working that night.
DIY VIP Reservation system :)
1. Never made it as a poor man
2. Never made it as a blind man stealing
3. This is how I remind you, that I’m really MOND.
Sometimes the answer is just staring you in the face. A Canadian face, that should have been from San Antonio, TX.
Image viewers I tried all beachballed constantly, were slow to respond if they even did, had many bugs, and required many interactions and pixel hunting to interact with.
It emphasizes instant response even when working with 10s if thousands of very large photos, and a UI that eliminates or reduces required interactions, and integrates with finder smartly.
It defaults to opening folders or images fullscreen and round robins windows across displays. The UI is a 3x3 button grid overlay that auto hides, the window name is the the last three parts of the file path. There is gesture support, but I don’t use it because focus is a pain to deal with.
JPEG decoding is memory intensive so there is a shared rendering process so the parallelism can be managed and memory uses isn’t duplicated.
A shared cache process contains bitmaps of images scaled to screen size that are stored on disk. This kind of assumes you are on a fast flash drive like an MBP where flash is basically as fast as memory.
The cache is a 100 element LRU in front of Caffeine (W-Tiny LFU) and all the cache state is persistent including Caffeine so it can remember the LRU and adaptive cache state across restarts.
Prefetching scales the previous and next five images in parallel so you can click forward/next and it is instant every time.
When you turn shuffle off it plays forward from the image you were on. You can click a button and it will loop all files on a directory.
You can open multiple files or directories from finder and it will play all nested files in order.
The order is a natural order that parses numbers so if the numbers aren’t padded you still get the correct order.
Ended up using JavaFX which works surprisingly well. Fast JPEG decoding, working HiDPI, window resizing and movement renders very nicely.
Yeah I looked at the files to see if you make any external requests. I guess I just found it entertaining that there's a web-game running locally on my phone :)
1. I built a small web app to provide a cycling routine to help me go from zero miles and overweight to riding a century (100 miles) this summer. I used to ride move frequently when I was younger and my longest ride was 87 miles with camping gear on my back. But 2 decades, a web dev job, and 2 kids later I am lucky to be able to get 10 miles per week for any consistent stretch of time. The app takes my recent riding skill and athleticism, and creates a 6 week riding 'program' for me basing itself on # of miles per day for the 6 weeks and increasing each week until the culmination of the 100 mile ride, allowing for 2 rest days each week. It isn't the most robust but it's gotten me motivated to ride this summer.
2. I built a reading list tracker that I can add the books I want to read for myself and my kids. It suggests which book to read next if I can't decide. It tracks # of books to read, # completed, # of pages & hours to read (so I can see how unlikely it is that I will ever finish my list or can plan time accordingly to know through the list systematically), allows me to categorize the books, and lists them as MY reading list or a list to read with my KIDS.
3. A European travel planner that I track country and city costs with, can create custom travel itineraries, which then will show actual costs for the itinerary based on the costs I am tracking/inputting for cities/countries/attractions.
4. More fun for myself and friends: A soccer scores predictor game. We each follow teams and clubs from various world leagues, and pick the scores for upcoming matches. Then the app scores us based on our predictions and we have annual competitions with each other. I built this before these were as popular as they are now, and well before the likes of FanDuel/gambling sites.
He hired me to make a VBA program that generates the netlist directly from excel. Refined it over the years and I believe he still uses it to this day. He can turn around a design in far keat time than it used to take.
I’m no EE — and it’s been probably 15 years since I’ve touched that code — so I may have gotten some details wrong here. But it was a cool project to work on and taught me a lot about code!
Whereas for myself in my own free time I bias more to the ruthlessly pragmatic, which often means the simplest or easiest solution, so I can move on to the next thing.
Random pick from those:
- many many years ago I once wrote a Terminal-like UI widget for Java AWT/Swing apps. This was in the very very early days of Java. To scratch my own itch. It gave me a way in my Swing/AWT desktop apps to embed a console/REPL-like widget (which could be kept invisible/inactive by default, then only appear when a special key pressed) to let me issue CLI-like commands in-app, for example for cheat codes or dev testing or to provide extra features to advanced users. It provided an API for registering comands and their handlers. Had built-in commands like "help" and to repeat the last command, etc. So my Java GUI apps could have the best of both worlds: the "friendliness" of the GUI and the power and conciseness of a terminal workflow. Super simple. Only ever used in a few of my hobby apps (and a few games I considered selling then.)
I named it, originally, in private, SwingShell. Then renamed it to Grio, because that had more personality. (Obligatory Pulp Fiction reference.) I even devised my own little theme song for it. Okay more of a tune. A melodic catchphrase. Why? Here let me show you my nerd license. Hold still, please. This will only take a second.
Basically I have a mobile app that I can send a message to a api. Sometimes it's just a note, sometimes it is a todo item.
Then I have a raspberry pi that polls the api for new messages and prints them onto a receipt/thermal printer on my desk. Then every morning I usually look and see if there is a todo item, or more long term item.
I haven't exactly thought of how to store the messages, but basically when the "receipt" gets to CVS level, I rip it off and store it in in a document shelf organizer. Every few months I'll go through the receipt for any long term touch items.
Maybe the game could benefit from a mode that verifies if a seed is solvable but I haven't gotten past it being just an idea.
I wonder how close looking for a group of lines that start with a number, then taking all the text following that group of lines would get you. I bet that would get you pretty close to the desired effect most of the time.
I also wonder if more standard NLP methods might work here, rather than using the full power of an LLM. Instructions are grammatically constructed as commands, so if you start with doing what I mentioned in the previous paragraph, then parse each sentence following the group of lines starting with numbers, you should be able to determine which ones are commands. If a paragraph contains no commands, it's obviously not directions.
Just some random thoughts. I do see what you mean, though: definitely not trivial sans assistance from an LLM.
I wish you all the best for your mother. Keep caring for her, before caring for the website.
How about a speech synthesis DJ, “that was Foo McBar from 19XX”?
https://hackaday.com/2020/02/26/lora-mesh-network-with-off-t...
These perform better than the Baofeng radios we used before, but the terrain is still a limiting factor.
This has led to a ton of fun little coding projects to help us answer questions better. A lot of very hard to Google questions involve album covers, so I ran every album cover I could get through Google Vision and built a little search engine. Another part of the contest is short (1-2s) clips of songs being broadcast and you have a few hours to come up with what they are. We built a massive fingerprint library ahead of time and used it to answer some of those (Google finally got better at this too, before we built this, it'd never work because the clip was so short). We also use AWS to live transcribe the broadcast because one of the hardest parts was remembering "were they asking for the actor? their character? the movie?" and having to wait until they ask the question again between songs.
Next up is a parallel auto-dialer. There's only a handful of people answering phones, so actually calling in the answer can be a struggle.
Obviously to make a real app out of it I would have redone it in a real programming language and made some frontends for web/Android/iOS.
Someone else pointed out https://freshbuzzer.com which looks like a real product that does the same thing.
It was a very fun project and I learned a lot about electricity, batteries and the pitfalls of aliexpress.
I'm currently using a NLR Wheel Stand, and probably don't have time to build right now, but if you'd consider shooting me an email at chris at cjkinni.com I'd love a chance at actually going down the route of building one of these. No worries if you'd prefer not to.
Great work on the whole thing!
I was a sysadmin for a dialup ISPs with a shell server in the mid 90's and people today have no idea how good we had it back then. An entire userbase accessible from a single shell prompt and a few commands instead of todays gamified web UXs with 3D graphics. Security was terrible back then, but the UX was calm, so I re-built that experience over everything.
It's not the most interesting tech I built but it's the most recent one and checks the features wish-list I've had when using other tactics training apps.
Just like there is no need to design and build the FM transmitter from scratch because [factory] can do it instead. Some of us still think it's fun to build things like that as a hobby, but those who don't can still have an FM transmitter to start with and create something more exciting from there.
You’d also need to ensure the caps contained enough storage solution at the right concentration. Over time the probes would introduce drops of nutrient solution (unless you rinsed them with distilled water, in which case you’d dilute the storage solution), and you’d need to replenish it.
- A git interface using fzf that works pretty nicely and is very composable. https://github.com/bigH/git-fuzzy
- An interactive evaluator, perfect for interactive `sed`, `grep`, `jq`, etc. If properly configured, it'll keep history per command or using whatever key you give it. I find myself using it often with `jq`. https://github.com/bigH/interactively
There are many other shell functions/scripts that are interesting from my `dotfiles`. Particularly interesting snippets for anyone who wants them:
- A recursize `which` that follows symlinks and stops at a real file. https://github.com/bigH/dotfiles/blob/3d48792b4e910d2fc82504...
- A `watch` alternative that runs in the current shell. https://github.com/bigH/dotfiles/blob/3d48792b4e910d2fc82504...
I'll give you an example: fabricating an ASIC is expensive. Using FPGAs is cheaper if the potential sales are low, but they're less performant.
If a hypothetical AGI a decade from now can do the radio gimmick, but it incurs an ongoing cost, but it's going to have wide appeal, it makes more sense to make a simple utility.
Better yet, the simple utility already exists and doesn't need a hypothetical "benevolent AGI". It doesn't even need an LLM. It's here today.
This entire sub-thread went off at a tangent of trying to shoehorn AI into somewhere it has no place being, just like the fetishizing of blockchain and attempting to shoehorn it into everywhere a database would be cheaper, more flexible and more performant.
A hypothetical "benevolent AGI" is going to be incredibly larger in scale than an LLM, thus much more expensive. You won't be running one on a laptop. We may not even have enough compute globally for a hypothetical "benevolent AGI".
I've been hacking on a related side project -- in my case, I wanted something like this but for Twitter. Right now it's using gpt-3.5-turbo to cluster related Tweets & rank based on my interests.
Source is here: https://github.com/kasrak/feedpaper
https://gist.github.com/HaraldKorneliussen/2bf20ca4f4f28c1aa...
I implemented a slightly more efficient version of it that uses a prefix doubling strategy to do the string sorting step, as well as some glue code to make it work on lines and pixels, but that code is too messy to share for now.
Still very early stage and many more features (racing, user management, etc) coming but it’s probably one of the first projects I’ve built that I’ve actually used
https://news.ycombinator.com/item?id=35729232&p=2
https://news.ycombinator.com/item?id=35729232&p=3
https://news.ycombinator.com/item?id=35729232&p=4
One of these years (maybe this year!) we won't need to paginate anymore and scrolling will be blissful again. In the meantime, sorry for the annoyance if you knew this; I just wanted to make sure everyone realizes how large and good this thread is.
I wish I started a lot earlier, but I was constantly trying to have the right stuff, or enough stuff to get started with the perfect setup. It turns out that makes no sense. You’re going to make mistakes, learn stuff, figure out what you like and don’t like, etc.
Starting with a bare bones setup using NFT, not even in a grow tent necessarily, you’ll figure out really quickly what you want to do with it and how to move forward.
Something I also didn’t really understand or consider is how easy it is to add sensors or update firmware gradually. Each of the sensors I use is useful independently or together; it’s totally fine to start with just one. Though most important is arguably water and air temperature; you’ll use those to accurately adjust other sensor readings, and in the short term, they’re immediately critical to plant health.
I’ve got a small system running on my old deep water culture equipment in my outdoor greenhouse, and I actually check its pH with plain old pH testing drops, a vial, and a card with the colours to match against. It works totally fine. While it won’t teach you about automation, it’ll get you familiar with how your system responds to different conditions, what the pH tends to do with the plants you’re growing, and so on. This is all invaluable and I wish I knew it before I started automating. I would have written better code from the beginning.
I've been looking into directional speakers so i can kindly ask the person to quiet down without waking the neighbors up. The person in question about 200ft away
When I was getting divorced a few years ago, I had to wait out the mandatory six month waiting period (aka “cooling off” period). Since I had the actual date the divorce would be finalized, I wrote a script and scheduled it to send me a countdown every morning at 4am. For a few months upon waking up I was greeted by an SMS with the ever decreasing number. I called it my freedom counter and loved watching people I told about it go from curious to mildly uncomfortable to amused.
Years later I repurposed the idea and made a wedding day countdown. This one started counting up after the big day, for continuous joy.
At some point I started building a ridiculously tiny SaaS service around it (and even registered domains undorthe.wedding and dothe.wedding), but never got around to finishing and launching it.
---
I’ve been tracking my weight daily since 2019. I used to just add an entry to an Airtable base, but the free plan has a per-base entry limit I’ve long surpassed.
I didn’t want to pay $10/mo just for that one thing, so I built a solution which let me send an SMS with the daily weight to a Twilio number, which then sent a request to an API endpoint I built, which then stored it in a TinyDB file on the server, which I then backed up to Backblaze using restic. The code behind the endpoint also sent me a graph of the last two weeks worth of entries, and the date I last weight that much or less.
I then decided to decommission the server hosting the endpoint, and in order to avoid having to pay for something else rebuilt it as a combination of Airtable and GH Actions. I have a base in which I enter the daily weight, then a GH Action fires a few hours later, and it gets all the entries in the base, reads a TinyDB file from a separate repo, updates relevant records, updates the TinyDB file, and deletes old entries from the Airtable base. This is now costing me $0, which is fun in its own right.
---
I started working from home during the pandemic, and my living room worked quite well as a personal office while I was single, living with just a cat. As my wife and I moved in together, there have been some challenges with working from a shared space, and we particularly found a need to communicate when I’m on a video call.
I used the Circuit Playground Express I got at PyCon 2019 as an on-air light. It was plugged into my computer, which exposed it as a USB drive, and it ran an infinite loop that set the LEDs to red if I was on a call and green if I wasn’t. I wrote a script that would detect the presence of a Zoom call process to do that automatically, and then another to manually toggle the flag using xbar.
---
EDIT: I thought of one I actually wrote for work! We’re a small team and were discussing making our on-call rotation official some time ago. Since we were starting from scratch, I suggested we try daily rotations (instead of the customary weekly ones), largely based on some things I’d read right here on HN. We don’t yet use any tooling beyond a manually managed Google Calendar, so I wrote a script to generate a fair schedule (e.g., no one gets stuck with all Fridays) and output importable files for both the shared calendar and people’s individual ones. We’ve used it for a few periods of time, and it seems to be good enough for our needs.
Reverend Lovejoy: No, but He was working in the hearts of your friends and neighbors when they came to your aid, be they [points to Ned] Christian, [Krusty] Jew, or [Apu]... miscellaneous.
Apu: Hindu! There are 700 million of us.
So next I take each event, send it to chatgpt3.5 and ask it to rate this event on around 20 parameters. Next, I take the latitude/longitude of each event and measure driving distance from my house. Then I have a master formula based on my personal interests and driving preferences and an app shows me the 10 events every day most likely to be interesting to me for any day.
If you haven't heard of vimwiki yet, check it out. Right in line with what you're working on.
I doubt anyone would front the money to produce 100k of them (to recover the cost of molds) unless you literally give them the design fro free.
Maybe there are smaller companies using 3D printers willing to take on a 1k sized order?
https://public-domain-film-quote-search.stefanbohacek.dev
I made it so that I can quickly find vocal samples to use in music production.
Reminds me of when I was getting into woodworking and my wife wanted a new coffee table.
Why would we go buy coffee table when I could build it in a month and have it cost 3 times as much?
It's by no means perfect. For one thing if I have a choice of 0.78 ROC based on 40 days worth of data and 0.77 based on 10 days worth of data I'd take the later because I know the later one adjusts more quickly to my changing preferences. Also my selection algorithm breaks up the input into (say) 20 clusters and shows me the (say) 15 top results in each cluster and I know I like the results from that better than if I just take the highest ranking results.
Since you have speed, I should dig into this.
The tool is still a WIP as it isn't portable between machines -- https://github.com/higgins/privatize
more on it here: https://encapsulate.me/writing/Privatize.html
I once broke up with a girlfriend, PatCon, because, PatCon, she would use my name PatCon multiple times in a sentence, PatCon and after a while it was annoying enough to where I had to break up with her, PatCon.
I gave a talk about that (with a lot of video and screenshots) here: https://simonwillison.net/2020/Nov/14/personal-data-warehous...
The idea is create a tool for creating a global mind map but instead it's a svg!
[1]=https://demo.openmindmap.org/omm/#flow/3ebb65fdbecb182e (not really mobile conform)
Blog post about it: https://swampbits.bearblog.dev/first-cloud-music-library/
Original python implementation: https://github.com/pauldardeau/cloud-jukebox
Go implementation: https://github.com/pauldardeau/go-cloud-jukebox
C# implementation: https://github.com/pauldardeau/CSharpCloudJukebox
Oxygene on Mac implementation: https://github.com/pauldardeau/MacOxygeneCloudJukebox
Oxygene on Windows implementation: https://github.com/pauldardeau/WinOxygeneCloudJukebox
C++ implementation: https://github.com/pauldardeau/cpp-cloud-jukebox
P.S. I'm looking to find my next job, so if you think I might be a good fit for an opening you know about I'd appreciate hearing about it!The only one I've found that's as accurate is the emulated version at https://archive.org/details/hh_snspell But mine also has two expansion modules to choose from :)
To streamline this, I made a little Arduino-driven device with an OLED display that can plug into the digital output port that many digital micrometers have. It takes the current micrometer measurement, applies the scaling factor, and displays the scaled dimension on the OLED.
So that means I can take a small piece of wood from the kit, measure it with the micrometer, and directly see its full scale dimension - e.g., it's a scale 8" thick plank. Or I can take the micrometer to the 8 foot measure, and use it to mark off a piece of wood that I want to be that long.
I built a storage shelf that self-inventorizes based on strain gauges. Through the change in weight distribution it can determine the weight and 2D location of the item added or removed. LED strips give immediate feedback. https://www.niels-ole.com/arduino/iot/2021/03/21/storage-sys...
I used this to automatically add the items consumed throughout the week to my shopping list.
I only ever built a single shelf board (subsequent boards had issues) and I never fully implemented the advanced usability features of adding new items for the first time and automatically determining good places for them, but it was a very fun project.
Semi relatedly, the reason I chose my current smart watch is that it can go weeks without charging, I simply don’t worry about it. Yes it has a limited number of colors and I can’t browse the web on it or w.e. but that’s a feature.
Maybe I’ll seek out a phone with similar battery use profile…
Ended up saving thousands of dollars for myself so far (I shop a lot online), and friends & family really love the product. We also applied to YC – so let's see how that goes!
One is an interface for a MIDI controller I use to be able to control the Soundcraft UI16 mixer I use for my desk setup. I'm a bit of an audio nerd, having done pro-am music production, and having a love for broadcasting, and what started as a simple setup to get good quality sound at low latency has now become an audio chain with a teleconferencing audio processor, a headless digital mixer, and several microphones to do acoustic echo cancellation and noise cancellation so I can use an open microphone without headphones.
My mixer, being headless, has no physical controls. From my DJ days, I had a MIDIFighter 3D controller not being used, and a Raspberry Pi without a dedicated task. I was able to write a small bash script to read note information from the controller and send web requests to a Bitfocus Companion server to act as API intermediary between my mixer and the controller. Now, I have physical controls for hardware muting my microphone, and the various computers at my desk. It's effectively a big Elgato Streamdeck for what I use it for, but to be able to upcycle the hardware has been quite nice.
I also was working from home with some long hours, and I wanted to try and improve my sleep schedule. I already use redshifting software (usually what's built into the OS these days, although I used to be a longtime F.lux user), and that's been great, but I also wanted to control monitor brightness by time of day. Giving my eyeballs less light blasted into them has helped me regulate my sleep better. I wrote a small python daemon that can run on Mac or Linux, integrate with native DCC tooling to send control commands to my displays, and gradually adjust the brightness of my monitors based on the time of day. This has also been eternally useful when, being an ops guy, I'm called in during the middle of the night, sit down at my desk to address an outage, and my eyeballs are bombarded with significantly less light, making the pain of adjusting much less difficult to address, and also making falling back asleep after the incident is resolved much easier.
It was suddenly very intuitive to build user interfaces on a button grid MIDI controller using standard React design patterns, not to mention the actual light shows being implemented as React components.
I still have to add a lot of words though, any feedback is welcome
I had little trust for the Chinese IC steered devices nor the early US attempters at pop market that refuse to describe even their safety approach.
Pleased with my personal results. Would not openly recommend doing it, because the DIY route as well as adopting TDCS do require that you can competently read medical studies. At least half of those I browsed fail good science test even at first glance.
And then of course the manufacturers and sellers are even worse, such as they are quite good at parroting misquotes of study results for marketing and PR.
Next plan is build an ECG and my own medical ultrasound, although with that one it is probably best to wait for about 5 to 7 years till the new-tech ultrasound generators get to market.
A handful of other people use it I think but I made it for myself and don't have time to maintain it when I'm not studying maths.
I'd love to read more about the work on this!
Can I get away with just 2 other microphones? Is it in python?
I also built a CarPC back before we had smartphones that could do everything. I wrote some custom Perl software for it:
- An audible user interface that allowed a remote control, a keypad, or voice commands to speak-navigate a series of menus, to allow running programs, selecting music to play, etc. It was extremely low-latency, fast and clear, to allow very rapid navigation. No need to look away from the road, unlike every annoying car navigation menu I've ever used.
- A music interface to allow selecting playlists, shuffling music, pausing/skipping, etc
- A program to play the next of a pre-written instruction when approaching a GPS coordinate; basically, ghetto turn-by-turn GPS nav
- A wardriving interface to tell you when a new access point was captured and if it was unencrypted and high signal
- A video player hooked up to a mini monitor installed in the dash
https://play.google.com/store/apps/details?id=uk.co.darkruby...
It's got hidden developer mode, where even more interesting stuff available
Incidentally I also built some tech for it: https://github.com/dllu/nectar but I need to update the readme...
If yes, then I started building a hand tracking based VR workout app back in 2019 using GodotEngine to get myself a bit of extra motivation to exercise at home.
In the meantime it's become an official app but I am still using it for myself very intensively ( unfortunately no longer using Godot )
//@ts-check window.kVideoSpeed = 1; window.initialVolume = 1;
NUMPAD_3 = "99" NUMPAD_2 = "98" NUMPAD_6 = "102" NUMPAD_5 = "101"
UP_ARROW = "38" DOWN_ARROW = "40"
let timeoutId = null; document.onkeydown = (e) => { if (!document.querySelectorAll("video").length) { // no-op for pages with no videos return; } window.initialVolume = document.querySelector('video')?.volume || 1
let myDiv = getOrMakeDiv();
e = e || window.event;
let KEYCODE = e.keyCode;
// NOTE: can't use left/right b/c those go forward/back 10s on some sites
if ((KEYCODE == UP_ARROW || KEYCODE == NUMPAD_6) && window.kVideoSpeed < 4) {
// up arrow
window.kVideoSpeed += 0.5;
myDiv.textContent = window.kVideoSpeed;
} else if ((KEYCODE == DOWN_ARROW || KEYCODE == NUMPAD_5) && window.kVideoSpeed > 1) {
// down arrow
window.kVideoSpeed -= 0.5;
myDiv.textContent = window.kVideoSpeed;
}
for (let el of document.querySelectorAll("video")) {
el.playbackRate = window.kVideoSpeed;
// prevent volume from changing
setTimeout(() => {
el.volume = window.initialVolume
}, 100)
}
if (timeoutId) {
clearTimeout(timeoutId);
}
// set timeout to remove div
timeoutId = setTimeout(() => { myDiv.remove() }, 1000);
};
function getOrMakeDiv() {
if (!document.getElementById("myDiv")) { let div = document.createElement("div");
div.id = "myDiv";
// add styles to div
div.style.padding = "8px";
div.style.textAlign = "center";
div.style.fontSize = "16px";
div.style.position = "fixed";
div.style.fontWeight = "600";
div.style.border = "1px solid yellow";
div.style.color = "white";
div.style.backgroundColor = "black";
div.style.zIndex = "999999";
// insert div at the top of the body
if (document.fullscreenElement) {
document.fullscreenElement.prepend(div, document.fullscreenElement.firstChild)
}
else {
document.body.insertBefore(div, document.body.firstChild);
}
}
return document.getElementById("myDiv");
}
But also I'm not trying to keep the cat out so there's that. I just like the door closed
(I’m a hack but the code is as general purpose and adaptable as I could make it, just in case someone wants to use it for another city.)
As two iPads are cheaper than a genuine hardware one ...
I was able to read in all the data points and then use the weather forecast and a few other data points to make changes to my HVAC system. The comfort different has been very drastic. Our house doesn't overheat on hot days and doesn't get cold fast when the temperature drops. (I am in the Northeast where there are big swings).
Then I had it switch to various temperatures while heating and also had a geofence for my phone implemented that turned on the heating when I entered a 500m radius. Even had a calibration script for the servo motor.
The easiest solution is probably brute force, have it try all the potential moves and see if it solves the game and if it does, make it a valid seed. Can be pregenerated, but should be doable in real time, also from a smartphone.
Also, I think I was just blocked from my first clearing, because I could not access all blocks.
Rotating the view and angle would be quite nice, but depending on your implementation, not trivial.
Maybe I implement it with babylonjs or threejs these days, it is a fun game.
I built a custom smart motorized masturbator.
It borrows from 3D printer design, and has a NEMA 17 stepper motor driving a 2GT belt loop around a short length of 2020 extrusion to slide a carriage along a linear rail. The carriage has attachment points that I've put clamps on, that close around a fleshlight-style sheath. There's a brace at the business end that you put around the base of the penis and it keeps everything aligned.
All the parts are custom-designed and 3d printed.
It has an outboard control box that contains:
- an ESP32-based microcontroller with a small OLED screen.
- a clickable rotary encoder that is the single input control
- a TMC2209 stepper driver
- 12v power input and a buck converter to feed the esp32
- 12v output ports for 2 additional vibrators and an an H-bridge module to control them
The simple UI allows full control over the motion: - stroke duration
- stroke amplitude
- offset from the 0 position
- motion path (just sinusoidal vs triangle wave so far)
The controls also allow control over the secondary vibrators for intensity, rhythm, and duty cycle.It's been evolving for a couple years now and it works brilliantly!
Next is an automatic door opener so you can detect her walking up and actually physically open the door, too.
I even got so far as to get it working with Zoneminder to dump out the clips that had motion, but didn't get further.
I wrote a script to catalog all my shows/movies then another that reads a schedule and generates a daily playlist. My schedule has daily episodes of some shows and then weekly showings of others. I even put some network block bumpers between some shows and "upcoming schedule" clips.
The output of the scheduling script is just an m3u playlist. A cron job loads the day's playlist at midnight and it plays continuously during the day. There's no controls to pause or anything, if I miss something I miss it (by design). All the video content is stored on a 5TB drive plugged into the machine.
To complete the old school analog nature of the project I picked up a low power Hlly VHF video transmitter. I've got a small CRT TV in my office that I use during the day and I can pick up the signal on the TV in the living room. The project started on an RPi with VLC but it struggled on some videos I'd ripped from Bluray so I replaced it with a little fanless AMD box with an HDMI-RCA adapter. It sits in the garage and I can pick up the signal anywhere in the house.
The best part is apart from the setup it's proven to be pretty reliable. My next step is to make a schedule output like what you linked and maybe a web based UI to let me "change channels". For right now it does what I want with no real fuss and I always have something on that I like.
It doesn't do anything amazing yet, but it's been fun to tinker with it over time and get back to coding as I do more and more management at work.
The website itself is here: https://barkeep.website, and I've been blogging about it here: https://edbrown23.github.io/blog/
The Nexia provides Acoustic Echo Cancelling, which is fundamentally the same stuff that VoIP apps like Zoom, Teams, Discord, etc. use to detect feedback and squelch it, except instead of ducking my microphone, it does waveform cancellation to strip it out, to pretty great effect. To take advantage of this, I send the audio output from my computers (I have my desktop or my laptop, which are attached to the same USB audio interface, and a Mac Mini that I use for secondary tasks, media watching, and a CI/CD worker target) as well as a contact microphone attached to the wall adjoining a bathroom. Audio from those sources are then removed from my microphone feed before it goes back into my audio interface for whichever primary computer I'm using as my teleconferencing device.
Some background: When I hiked the Pacific Crest Trail few years ago, I used to order items that needed to be replaced or that I lost to the next or town stop using my phone (most towns have a general store or a supermarket, often not an outfitter).
However, it's not uncommon for sections of the trail to be outside cell service for days between town to the next one.
Anyhow, since the next trail that I plan to hike, the Continental Divide Trail, is even more remote than the PCT, I started to play with a prototype of a satellite messenger backed service to let me order items from a predefined list (each can match multiple items of a different priority) and be shipped to a predefined shipping address (post offices of trail towns along the trail).
So, for example, assuming that one of my contacts is a phone number that my service is monitoring, I can text a message like that:
items: shoes, tape, filter, usb cable, ice axe;
to: Chama;
eta: 2023-07-01;
And it should place an order of a predefined pair of shoes, water filter, Leukotape and USB cable and ice axe to Chama, NM.
Messages are limited to 160 characters before they get split, and so to keep it simple, I might use shorter abbreviations for some items.If any item on the list can't be delivered until 2023-07-01 using prime shipping (unfortunately it's the easiest option), it should be dropped from the order. Alternatively, if the guaranteed delivery date is off by 1 day, I might just place it on a separate order, hope for the best and if it doesn't show up on time, it'll get returned individually after not being claimed.
On my system I'm running mpv on top of OpenBox with compton for the compositor. It's been much smoother all around than VLC or mplayer on the same hardware (an AMD mini PC now replacing an RPi I had been using).
A spectrum analyser has probes!?!? This might be where I am going wrong... But the bench scope is largely in agreement about the distinct phases of a cycle at RF freq.
For me, on my hardware, on my network, I've got a process that works. It's a non-zero amount of effort to generalize the description of that process.
You need a fitness tracker and some machine learning to really get your freak on.
Sorry, too tired to come up with a good robot innuendo.
When you are in different timezones it can actually be nice to fall asleep with the other person "close" to you; so we kept Skype running while one of us went to bed and the other person was working on the PC.
Unfortunately the internet connection would regularly drop, ending the Skype call. Now you did not want to wake the other person by calling them.
So I wrote a small script that would allow you to send a secret word in the chat and invoke the other persons' Skype to call you instead automatically.
Kept our relationship healthy. Now we've been married for nearly 10 years and are happily living together :)
My setup looks something like this:
https://nesblast.com/img/snes_hacking_setup.png
If you have basic ASM experience, the SNESdev wiki will tell you everything you need:
https://snes.nesdev.org/wiki/Main_Page
If you don't have basic ASM experience, i would start here:
- https://github.com/joelmccracken/workstation
At this point, its basically ready to go. Its a weird feeling. I've been working on it for so long, and now it... works.
Being able to use github actions with macos runners makes this project so, so, so much easier.
Another project I've been working on is a custom authoring format - think markdown, but customized to my needs (specifically, the format is extensible). Think markdown/xmlish hybrid. There is a lot of churn though so I'm not quite ready to demo it, but once I get something interesting I'll share it more with folks.
The implementation was in netlogo I don’t remember why. It was really fun
[1] - https://w.wiki/6dxC
[2] - https://commons.wikimedia.org/wiki/User:Spinster/WikiFlix
- A family member in an elected position needed to write a schedule for 22 healthcare professionals that take shifts every month and I wrote a tool for them that allows them to make sure everyone gets sufficient time off and nobody takes too much of the weekend load. They were elected again and to a higher leadership role partly because of the scheduling tool.
- Regularly writing new stock trading, modeling, and timing software to improve my earnings from trading.
- Wrote my own tool to scrape bios, cluster and find investors in different niche areas and need to rewrite it for recruiting people with niche expertise.
- Created a social network for collaboration between nerds like me in different disciplines at top universities while I was at grad school and shut it down after it got flooded with recruiter spammers. Always thinking of ways to relaunch that.
It keeps a history of every change to the graph in Git, so one day you could potentially implement some form of time travel and see what the graph looked like at an earlier point in time without too much difficulty.
I have used the app every day for years. I feel like there's something promising there that is of general interest, but I have not figured out how to communicate the value.
Manually adding areas for all items would not have been feasible(>100 different product types with sometimes multiple SKUs from different brand for the same product type), so my idea was to add a hand-scanner and when a barcode gets scanned, it checks if it knows the product. If it doesn't, it would tell you to put it in a special weighing position. After wheighing it would light up all the boards in accordance of how well the item could be placed there. This could have taken into account the total weight of the board and the likelihood for the item weight to be mistaken for another product already on the shelf.
In the end I gave up before getting these usability improvements in.
function c
set -l directory (fd -d 5 --prune -a -H -t d -g '.git' ~/src ~/b -x dirname {} | fzf --tiebreak=length,begin,end)
if test -n "$directory"
and test -d $directory
cd $directory
end
end
I just type 'c' and then 'rails' and I'm in the rails project. I really like diving into code and this makes it much faster.I also have this one to clone or cd a project from github like `gc rails/rails`
function gc --argument repo
set -l dir $HOME/src/github.com/$repo
if not test -d $dir
if test -d $HOME/go/src/github.com/$repo
set dir $HOME/go/src/github.com/$repo
else
mkdir -p $dir
if not git clone "git@github.com:$repo.git" $dir
set -l git_status $status
rmdir $dir 2>/dev/null
return $git_status
end
end
end
cd $dir
end
And this function: function list_after_cd --on-variable PWD
ls
end
Runs ls every time I change directory, which you basically always want anywaysThe README goes over this, but if people keep blindly ignoring it, expect regulators to figure out a way to make our lives a lot less fun.
1. https://web.archive.org/web/20130505194305/Pi.Gadgetoid.com/... 2. https://pinout.xyz 3. https://pico.pinout.xyz
To create the presentation, you have to import 3D models (preferably fbx or glb) and place them in the 3D environment as desired. To create a "slide" you just have to click on the "new" button under the "slide" tab and it will capture the camera pose.
After creating some slides you can press the "start" on the menu to preview the presentation. Once everything is loaded, you can scroll through the preview page, and the camera will be animated sequentially between the captured poses.
That's the basic usage, but there are also other features available.
The editor page: https://arthurmiy.gitlab.io/editor_slide_3d/editor/index.htm...
Presentation made using the tool: https://arthurmiy.gitlab.io/se-webview/jaguariuna.html
I'm currently testing it and have a few test users for feedback. I hope I can open source it sometime this year, after integrating the feedbacks, and polishing the code.
It's not intelligent for now, but that's by choice. Instead, I prefer to have custom rules for filtering (e.g., adding tweets from user X to feed only if the likes are above a threshold). I may use GPT for summarization later, but honestly most of the posts are either short (e.g., tweets), or they come from websites that have description/summary in their meta tags.
Please shoot me an email to `hey@mofeed.news` if you want to test it :)
edit: Halfords still stocks these! https://www.halfords.com/technology/mobile-phone-accessories...
// Get the anchor tag element
const anchorTag = document.querySelector('.morelink');
// Add a scroll event listener to the window object
window.addEventListener('scroll', () => {
// Check if the user has scrolled to the bottom of the page
if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
// Fetch the content from the URL stored in the anchor tag's href attribute
const xhr = new XMLHttpRequest();
xhr.open('GET', anchorTag.href, true);
xhr.onload = () => {
// Append the fetched content to the page
const div = document.createElement('div');
div.innerHTML = xhr.responseText;
document.body.appendChild(div);
};
xhr.send();
}
});
it's now generalized and for everyone
The server is discovered via DHCP.
Is there any place you have more info on this? I'm especially interested in the genetic algorithm.
Hilarious, but gross
I'd certainly be interested in reading about how it works, even without anything approaching build documentation.
Unfortunately they're removing support for all Plugins over time and have already eliminated ones that play content.
https://support.plex.tv/articles/categories/online-media-sou...
About 5 years ago, I had a car stolen and lamented what affordable tracking mechanisms I could use. I cobbled together an extra cell phone and a data only SIM. I kept the phone running in the back of my van plugged into an auxiliary cigarette lighter port. It uploaded data to google spreadsheets every 15 minutes. I had to root it to have it automatically boot when connected to power. In the end, it was flawlessly reporting its location every 15 minutes. While I was testing this, my car was stolen. The google spreadsheet pointed me to the GPS location where it was. A phone call to the police and a 40 minute wait for them to arrive got my car back only hours after stolen. Dude was sleeping with a big knife next to him, so I'm glad I let the professionals speak with him.
What country are you in? We are en Denmark, which is horrible for reds.. but red is “real wine” so thats what we are making
What do you use it for? Just the typical depression type thing or have you experimented with it at all? Super interested
FWIW, I interpret the question as being strictly about stuff one built for oneself in the context of everyday, day-in, day-out life. Stuff to use yourself. And on that front, I just realized I almost never build anything strictly for myself. I work on Open Source projects and work on projects at Fogbeam that I (want|hope|expect|whatever) other people to use, or things I would use myself in a business context. But I just don't build handy little gadgets to use around the house, or in my truck, or when out and about.
This may be one of the first times I've really felt a strong case of the "imposter syndrome" that one hears so much about. I feel like I should have some answers for this, so why don't I? :-(
OK, to be fair, I did built at least one thing just for myself. I have a couple of lamps that are positioned in an out of the way location in my living room, and I hate having to walk to them and stretch to reach the switch(es). So I did the whole "IP controlled lamp" thing with a relay and an Arduino Nano 33 IoT board. The power strip the lamps are plugged into is controlled by the relay, and I can send an HTTP request to turn the relay on or off. I created a shortcut on my phone's homescreen so I can easily control it from my phone. But that's such a chintzy project I almost feel worse for admitting to it. :p
From one side, the cat can just push open the door. The closing force on the door comes from a small weight hanging on a string, which goes from the top corner of the door to an eye screw on the wall and down to the weight. The weight is adjusted to be just barely enough to pull the door closed, so the door is easy for the cat to push open. The cat walks through and then the door closes very gently and quietly.
From the other side, the cat can pull open the door. I stuck a little hook-handle on the bottom corner of the door, and the cat learned to paw the handle and pull the door open. Because the door closes so slowly and gently, it's easy for the cat to get through.
This lets the cat can come and curl up with me whenever he wants. It's quieter than a flappy cat door; he can come and go without bothering me or waking me up.
--- PROMPT ---
You are given a meetup event description. For each of the following attributes, return the percent likelihood that the event involves has that attribute, in CSV format:
Attributes:
- Technology
- Pets
- Exercise
Example:
Technology,0.3
Pets,0.1
Exercise,1.0
https://github.com/emwalker/digraph
If you can crowdsource the indexing, you get yourself a manually curated search engine with a nice topic graph that can be traversed. A piece of this puzzle that hasn't been tackled yet is a reputation system to keep the signal-to-noise ratio high and deal with spam.
> What’s an example use case of where you use that system to find a link?
An example use case is that I come across some interesting long-form article on a topic I'm following, e.g., Shackleton's expedition, that's published on a nice website and that I don't have time to read. I can just drop the link in the right topic and get back to it without too much difficulty. Or that's the hope, anyway. (Doesn't always work out that like that.)
Another thing I'm interested in is what the topic structure ends up looking like as it's more fully fleshed out. So sometimes I'll drop in random links even if they're not that interesting, just to build out the topics.
In my free time I play videogames mostly. I dream of making them myself, but I never have. And I generally don't do cool tech projects like this for myself either.
I made a canvassing app for my friend who was running for mayor of his town once, but yeah.
I barely even have my own github account.
So please don't feel like an imposter. It's ok to treat tech as a day job. :)
https://chrome.google.com/webstore/detail/substack-video-dl/...
https://addons.mozilla.org/en-US/firefox/addon/substack-vide...
* I wrote an add-on that allows me to read HN comments in a structured way. A typical screenreader would present page in a linear manner, so you'd have to read all replies in order, which is quite tedious in popular posts. My add-on parses the page and identifies the level of each comment, and then I can navigate to previous/next comment at any level. So I can quickly check top-level comments and then read replies only if I'm interested.
* Another add-on makes Jupyter edit boxes to work with my screenreader. Jupyter was requiered at my company , so I either had to write that add-on or else. The way it works is that it sends Control+C Control+V keystrokes to the browser to retrieve contents and then presents them to me in an accessible window for editing. When I'm done it would Control+A Control+V new content back to edit box.
* BlindCompass - iOS app that I wrote for myself to navigate on the streets. One of the problems of blind people is that it is easy to lose the sense of heading, e.g. where is north vs South. So BlindCompass would read my heading and present it as a two-pitch sound, that allows me to deduce rough direction. It's also easy to figure out the right direction and just maintain it, so with BlindCompass I can cross large open spaces easily.
I've often wanted a 3d grid for exploring alternate tunings, which would only be feasible in VR. (On the other hand, since buying a Lumatone hex-grid keyboard last year, not so much.)
So I built https://looptube.xyz It takes a YouTube ID input and allows you manipulate the video to loop and change tempo
for people that don't want to click... $450/month and also buzzmein was the old name
Thankfully ffmpeg support for DASH and HLS is very good. It’s not hard to transcode, this does all the right incantations. It can take a lot of CPU/time, but it’s a one-time thing.
At first I tried all kinds of methods to turn it on only when there was something interesting to avoid drowning in terabytes of data, detecting things like: cars, people, animals. I tried classical image processing methods, and tools like Motion, then tried similar image compression algs to find significant macroblocks; then I tried all types of methods in OpenCV; next came several neural nets with off-the-shelf YOLO/SSD object detection (using Google TFUs, Nvidia Jetsons), I even tried retraining the networks with my own tiny dataset.
In the end, everything sucked with too many false positives blowing up my cloud alert SMS traffic to myself. So now I just record 6 cameras nonstop to files. I don't get the benefit alerts, but nothing much happens, and if it does, I have history recorded.
It was a fun project, I tried all kinds of codecs, cameras, languages, frameworks, hardware, etc. I even started out trying to do custom battery-powered wireless device using a raw Chinese MIPI CCDs and building my own WiFI station. I spent over 3 years on it, just to end up with your basic CCTV box. But it was fun!
https://daniel.lawrence.lu/photos/pcc
Technically, the photo could be twice the resolution, since the length of the line scan sensor is 4096. It consists of two lines, RGRGRG and GBGBGB. By interpolating the red and blue channels, it would be possible to get images 4096 pixels tall. The challenge is that the two green channels apparently have quite different sensitivity and also each pixel has some variation in sensitivity, which also seems to drift with temperature and settings, so it's quite annoying to calibrate everything properly haha.
It's so I can NTP sync my Citizen radio controlled wristwatch which otherwise only gets time signal if I happen to be in Europe or some parts of Asia.
I don't think anyone else really uses it, and I haven't promoted it at all. But I really enjoy using it.
The ones I use daily or almost daily:
a simple, scanable tab manager that lists all the tabs over all your windows in one list. you can close tabs via middle clicking them and bring the tab you want into the forefront by clicking on it.
an extension that captures capslock and a/d to cycle focus from one tab to the left or right
an extension that opens up a folder of bookmarks a few bookmarks at a time via a right click menu option
an extension to change the speed of a youtube video by having - + buttons at the bottom of the page overlaid and also tells you the current speed of the video.
an extension that made a few quality of life tweaks to the apple development docs.
a theme extension that fits what i want the browser to look like.
I have some others but these are the most useful to me
In meatspace, I built a fan box that hangs at the top of my window facing out so it can take the hot air from the ceiling and push it out while a fan at the bottom of the window pushes cool outside air in.
Would love to know more. I'm a sucker for anything RSS.
A proven solution to this problem already existed - chess clocks. However, those only work for two-player games, and we play games with the number of players ranging from 2 to 6.
So I made a little web app that's like a chess clock but supports several players rather than just 2. It's designed to be used on a phone and put between the players on the table. Your turn ends when you tap your clock. There's also a pause button for during combat so that you can't unfairly run down another player's time while deciding which creatures to block with. The KO button distributes a defeated player's remaining time amongst the players who are still in the game.
Made with 100% organic, home grown typescript. No React in sight.
Really fucking dumb. Uses browser geolocation to tell me which neighborhood in San Francisco I'm currently standing in. Grabbed the lat/longs of each neighborhood from the SFData [0]. It works by plotting a circle representing your location + uncertainty and determining which of SF's 117 neighborhoods intersect with it. If your circle intersects with more than one neighborhood, it's smart enough to categorize them in order of certainty. It even automatically updates as you move, it's pretty fun to sit in an Uber and watch the neighborhood change as you move across the city. Learned a lot about polygon intersection algorithms, they're pretty amazing!
Built it a number of years ago when I moved here. Since it runs entirely in the browser, it's hosted for free on github pages and I don't need to maintain a server.
But... I had just a MASSIVE amount of code that was literally just for me.
Emacs basically became my OS.
Emacs allowed you to just eval code on the fly and the IDE would just adapt. No reload required. So if you wanted to do stupid stuff like make control+enter open the current URL at the cursor, you just write a three line script. Then you add it to your elisp on load.
... but mine got WAY out of hand. It was just mountains of code.
All of my Linux boxes use btrfs as the filesystem.
I have some tools that makes snapshots of all the subvolumes I wish to keep backups of and does incremental transfers of them to my NAS. It will incrementally transfer any non-synced ones as well, so if you run make-snapshots multiple times without backing up, they'll all end up on my NAS eventually.
You can also have it create a writable snapshot out of the latest full snapshot so you can muck around with updates without breaking your current environment. It also updates the rEFInd configuration dynamically so you can boot into old snapshots if the one you're working on is broken. You can also have it spin up a VM to test as well.
I also wrote my own tiny dynamic DNS service I run on my blog's VPS so I can bind my home network's IP address to a domain name. It's just a tiny node.js app that acts an an authentication frontend to update a bind server's DNS config.
It’s especially frustrating on dating apps like Hinge which only show neighborhoods. Half the time I don’t even know if they live in the same city as me.
Cool trick either way!
[1] https://pbs.twimg.com/media/ERqCfdkX0AEWTN_?format=jpg&name=...
Useful to head back the way you came, or tell someone you see in the distance roughly where to head to meet you, in both real and virtual worlds.
So, I made a "Plane Above Me" app that listens to airplane sound. Once detected, it polls data from flight APIs and read out the flight info and aircraft data.
In other words, it's my little "Flight Announcer".
After I got fired from twitter in 2015, I was having some remorse, dissatisfaction and sense of failure, opportunity lost. I wrote a browser extension, https://github.com/orsenthil/fortune-browser-extension that will good quotes I had collected and help me focus.
I still go by that maxim. "There are far far better things ahead than any we leave behind. C.S. Lewis" and want to share this with anyone was let go by bad leaders in the tech layoffs.
These projects also watch the file system to look at build system changes
I'm assuming you are measuring how far a certain feature of the train takes to get from one point of the frame to the other. Similar to how police catch people speeding by measuring how long road markings take to pass in a given frame.
I built it to scratch my own itch: I wanted a way to use AI on the go the way I talk to people (via text messages) and wanted a way to quickly show off AI to the uninitiated (friends and family who have never seen or used or understand AI).
My parents are incredibly patient, but after a couple of these calls, they'll just leave the phone to ring. The soundtrack of the phone constantly ringing in the house, and the guilt associated with not picking up, is unbearable.
My brother and I built a system where her calls get re-routed to a rotation of relatives to answer her calls, to spread the load. After a call with her, each person gets a 2 hour break (customizable). If no one is available to answer, or if everyone is on break, she gets a voicemail that my dad recorded that explains that we love her, that she lives there, all the usual stuff.
It's working beautifully.
After lots of rehab she came home, but was paralyzed on left side, couldn't speak, couldn't hold a pen to write. Our communication technique was having her point to letters or phrases on a piece of paper.
I wrote a typing program back then that would accept as input any USB joystick for selecting letters/phrases and then text to speech on button press. Not terribly complicated, but also better than anything I could find at the time.
This is also why companies like Sparkfun don't sell batteries internationally. Adafruit used to have this restriction too, but they seem to have recently changed that.
https://github.com/Aperocky/hnterminal
You can also get it via `pip install hnterminal`
[^0]: https://twitter.com/tanagram_/status/1652164856563507200
I prompt GPT to return what I want in JSON format and that works surprisingly well, so it turned out easy to parse too.
Definitely a strange default setting to have it enabled.
As the sibling says this was the season 2 finale. There were other similar instances.
S02E22 "God Mode": https://www.youtube.com/watch?v=cHIo96yBf70 (3m54s)
My aggregator is actually a giant grease monkey script. Grease monkey can just do xml requests cross domain. HTML is great for creating links that open in the browser and I don't want to be alt tapping from one window to the other. This also makes me uninterested in the <description> element which consumes a huge amount of space. I'm really discarding everything except [the pubDate, the headline, a link to the content chopped into the [sub] domain, and the rest of the path] It's a giant date sorted array of arrays. New entries are pushed into a temp array from which they are pop'ed and spliced into the right spot in the big one. I usually keep 5000 entries (2000 is enough tho) so nr 5001 is removed.
It stays small data that way! I can periodically post it to some simple php script that turns it into a static html document. If the oldest result is newer than the newest from the previous dump it dumps it again.
Every 20 seconds the table on the page is replaced with the updated results. I had it in real time but it moves to much to read and click on things. No need to preserve any dom, dom manipulation is slow, just feed a whole new table into the page as a string.
XHR requests must be async which is a terrible technology. You don't know how many responses you are going to get per second. It has some relationship with the number of requests you make but making a lot of requests there is no way to avoid receiving a lot simultaneously which, if you try do anything with the response text, freezes the browser. There is no time to do more than push them into an array.
Then I use a setInterval to parse them, how many depends on how far behind the parser is. setInterval delays if the browser is busy, parsing can be far behind. If it is to far behind the number of requests per second is dialed down.
Probably the funniest part is the parser
It starts with a regex exec in a do{}while() loop. It looks for things that look like pubDates, it compares up to 3 time stamps with the oldest pubDate in my result set. Most feeds never make it beyond that point.
Then it tries to parse the feed by the rules. It looks for the string <item>, if it finds that it looks for <title> etc
Lots of feeds are hilariously broken and invalid so I have an arsenal of alternative approaches in the correct order of likelyhood.
The funniest moment was when someone deleted their feed and redirected it to the website front page.... but I never noticed it. It tried to parse the "feed" in all ways it could and as a last resort looked for <a href=""> elements. Because it also couldn't find a pubDate of any kind, nothing that looked like a date, it took the /2023/01/03 part of the url and made a time stamp from that, inserted it into the result set and happily continued.
Feeds that are slow get suspended, lvl 1 is 24 hours, level 5 is a week, 5 weeks is the limit. I might try them again after a few more months.
In monitor mode each function has it's own tiny log window. The log() function is normally empty, modern js skips it efficiently regardless what kind of complex params are set.
At times I have benchmarking things inthere so that it choses the fastest approach automatically.
It can consume opml (any number pretty much) but I prefer using flat lists of feed urls.
Apart from the (optional) dumps the backend is just static files.
Because it runs in the browser it can also use credentials. It mixes in my gmail feed too. https://mail.google.com/mail/feed/atom
Not really something I want to share with the world.
I will share this http://salamisushi.go-here.nl
This is a greassemonkey script, it detects feeds linked in the web pages you visit, displays an edit box with the feeds it found and it lets you export the list as an opml file.
The web pages you visit are actually amazingly interesting to you personally. Much more so than one would expect. Unsubbing the garbage goes much faster than finding interesting feeds manually one by one. If there is a lot of garbage it is because you've visited to many garbage websites. It's funny to reflect on.
Thanks for your time
It works by finding all of the comments with indent=="0". Then, each time the bookmark is clicked, it creates and follows a link. Each comment has a unique id so I just have to concatenate current_url + "#" + unique_id and follow that link.
Once the script reaches the bottom, it follows the "more comments" link and repeats the same process.
I plan to write something similar for Reddit
The open/closed detectors for the drawer and one of the ovens use Hall effect sensors with neodymium magnets. I found a very thin, but very strong magnet (gold-plated for corrosion resistance) that I adhered to the glass on the oven door with Kapton tape (on the bezel, outside of the hot part). I also built a 3D-printed housing for the sensor on the back of the oven frame opposite it.
Due to physical constraints, it wasn't possible to put a Hall effect sensor on the other oven. Instead, I reverse-engineered the oven's control board, found the exact (somewhat obscure) wiring connectors that the oven uses, and made a passthrough sensor that MITMs two of the wiring harnesses (one for signal, one for power). It uses a MOSFET to amplify a signal that my custom control board uses to sense when the oven's own door open/closed switch is engaged. It also uses an optocoupler so that the oven and the rest of the system are electrically isolated. I was surprised that the oven uses the duty cycle of a PWM signal (instead of just a simple on/off signal) to represent whether the oven door is open or closed.
There's also a push button switch next to the door to disengage the system. It's fail-safe, in that there are no electronics or software involved. It's a simple electrical disconnection of the power that goes to the door lock. The lock itself is fail-safe, too: it's an electromagnetic lock (rather than one with a physical bolt or latch), so if power goes out, it's guaranteed to disengage.
The brains of the operation is a custom control board with an off-the-shelf Arduino nano soldered onto it. I could have put all of the Arduino components directly onto the board, but it was easier to use a pre-fabbed Arduino and just design the custom parts.
I ran CAT5 to most of the sensors, but used some heavier 18 AWG wire for the lock, since it needs to handle more current. I used JST XH connectors for most things, but larger XT30U for higher-current components.
A few other things I'm proud of:
- All of this was non-invasive to the ovens. I didn't drill any holes or cut any wires.
- I designed some custom PCBs for this (my first time) using Kicad (Phil's Lab on YouTube is great!) and had them fabbed and partially SMT-assembled at JLCPCB. They turned out great. Pretty amazing compared to when I had some boards fabbed locally 20+ years ago. Turnaround time, quality, price, and general experience are loads better than they used to be.
- I taught myself CAD and 3D-printed enclosures for the electronics and sensors. I used OnShape, which has a semi-hidden version that's free for personal use, as long as you make your designs public.
- I taught myself surface-mount electronic assembly for this project. It was easier than I expected.
- The push button on the wall has an RGB LED in it that shows status. It also allows the system to be disabled temporarily for 5 minutes by long-pressing it.
- Given that some of the electronics will be installed in or near an oven, I took care to characterize the thermal environment and respect the thermal constraints for all of the components I used.
- I put a temperature sensor in the electronics in the oven, and if the electronics ever get too hot, it will indicate overheating via the LED that's in the pushbutton switch on the wall. (I checked the temperature in the sensor location while the oven was running before installation, so this is just a precaution. It hasn't ever overheated.)
- The control board enclosure has a laser-printed label on its face that marks the ports for all of the sensors, actuators, and power connections.
- The whole system is basically invisible except for the button and the electromagnetic switch.
This whole project is a bit of a Rube Goldberg machine, but it was really fun to do the design, hardware, software, and physical assembly. It turned out really well, and has been working great for a few years now.
Personally, I don’t think I would contribute as a private individual either, since the Software effectively isn’t Open Source.
If you go back a few days you can see the emergency stop of Forsmark 1&2.
First brown out I have experienced in Sweden!
Nothing broke, the computers ran. The incandescent lightbulbs where down to 50% for 2 seconds and the humidifyer rebooted.
For north europeean prices next winter will be interesting: https://www.nordpoolgroup.com/en/Market-data1/Dayahead/Area-... (click chart and week)
I wrote it up a long time ago. I need to clean it up, but you can probably figure it out from here: https://gcanyon.wordpress.com/2013/05/12/keeping-a-clean-des...
This is not mysterious tech deriving images from sound traveling through the floor. You will be out of luck with your underground subway.
>Ensō works perfectly fine even without internet connecton.
hah, editing to say that I really liked it. I'm stress a lot about how I phrase things and am very conscious about how concise am I when when I'm writing for an audience.
Absolutely, I’d like to work towards contributing useful things to open source gardening technology. Once I have something useful to put into the world I definitely will.
> Does it depend on daylight?
No, this particular system is totally isolated apart from fresh air pulled in to regulate humidity and temperature. The lights are the most expensive aspect of the system by a wide margin, but they do work extremely effectively. The plants are very happy.
I have an older iteration of the system working in an outdoor greenhouse without artificial lighting. It uses fans to regulate air temperature and humidity, but it gets light from the sun. It’s doing fine so far, but the temperature is still relatively lower so growth is slower than in the tent. I’m excited to see what the results are like over summer.
> Is water/air recycled?
This is an interesting question because at the moment the answer is no, but I have the beginnings of plans to recycle the water. I use a reverse osmosis system to feed into the system gradually (this ensures my water sensors provide reliable readings), and I’m fairly sure I could add a secondary tank to drain old solution into, filter it, and use it as the source for the feed into the RO system and then back into the active tank. Though it’s not necessary now, I think that level of efficiency could be incredible.
I’d love to be recycling nutrients as well. I know there’s plenty leftover when a grow is done, but I can’t know what the ratio of each nutrient is in order to rebalance it for the crop I’m growing. I’m sure some growers are able to do this, but I have a feeling it’s a bit beyond me. It seems like a job for a mass spectrometer. That’s possible to DIY in a sane price range, but I will likely need to wait until my kids move out to take that on. I do love the idea in any case — utilizing all of the nutrients and reusing them when possible would be a major accomplishment for me.
> What is the reason behind you making this?
There are several reasons. One, I eat a lot of greens and they’re getting more expensive. I kept a sheet in Soulver (a sort of natural language math program) which outlines a cost breakdown of a head of lettuce grown hydroponically vs from a store. It eventually hit a point where I could grow it for less than I could buy it for, and it justified jumping in and making it happen. My ROI has worked out fine, so the sheet was correct and it’s not crazy to grow with a system like this (so long as you don’t mind the maintenance, harvesting, trial and error, etc). It has actually worked in favour of growing it myself quite a bit more since I first started and hasn’t shown signs of tilting the other way for a while now.
Two, I love learning. The more I learn the more reasons I find to be in awe of the world. Seeing the way the plants grow, understanding the chemistry and biology of the system, accomplishing new things with technology — I find it incredibly fulfilling. It shows my kids that the distance between here and making something interesting or useful happen is simply doing it. First we had an idea, then we had real plants growing almost magically in a system built from scratch. All of that is awesome.
Three, like you I see some instability in the world and I want to have a grasp on how I might ease tasks like finding reliable nutrition. I have bags of fertilizer because they’re not terribly expensive and they can help generate good nutrition quickly, easily, and very reliably. Something like the kratky method can actually work really well even without stable power, so long as light and temperature are reasonable. I also have a lot of seeds for sprouting, as they’re an incredible source of easy nutrition in emergencies too. I don’t really want to need these skills for that, but I do want to have practical skills for producing as much food as possible if something were to happen.
As far as open sourcing goes, I hope to get a sense for how easy or difficult it is to get up and running with this stuff once I can get it in my friends’ hands. I plan to add a crude web interface for managing environment and automation parameters, and I’d like to figure out a way to sensibly scale out the system. For example, not everyone I’ll be giving it to cares about pH or EC, so they don’t need those components. I could simply not solder things onto their boards, but I’d rather figure out something like using standoffs to join the boards in a stack and gradually add features that way. Kind of like hats on an arduino I guess.
As I iron this stuff out I definitely want to put it out in the world. At the moment there are so many superior options in ecosystems like raspberry pi, I feel like I’d be wasting people’s time. I do think a pi is overkill (though potentially complimentary) for this kind of thing though, and the power of a connected microcontroller with MQTT and simple RPC services is way beyond what most people expect.
I am actually a volunteer at a non-profit in Japan. The NPO provides very similar service using volunteers for elderly people. I have been looking into automating some of the call handling/routing, personalization, and increasing family participation.
This is in line with Peelian principles of policing. It was explained to me by a policeman and it was fascinating. He had worked in the UK, Australia and New Zealand.
In his view, Australia was considerably harsher in its policing and NZ was at the other end of the spectrum, UK in the middle.
[0]: https://chrome.google.com/webstore/detail/ffpifaemeofjmncjdb...
And then I realized that there is a certain group of people who really need a private photo-sharing service without any oversight, and that not only do I want nothing to do with that despicable group, I don't ever want to realize that I helped them in any way.
So I decided to never release the code and never make it available.
(Mine is just a personalized spreadsheet, https://pasteboard.co/PB1theDENEu7.jpg)
I switched a year ago after some dumb monetization change at Plex annoyed me enough and it's just been so much better.
Imagine a product just like Plex, but without all the shit Plex tries to pull all the time!
2. I have experimented with cognition and mood modulation with positive personal results. I would prefer not to go over my current area of application since it is outside of the well-tested. Too often personal anecdotes on the internet may be misinterpreted as "proof", dangerous in areas that require a solid scientific approach.
3. Sadly, and the credible scientists have been calling for such research for years, no solid long-term, large-scale studies have been done on TDCS. What has been widely and somewhat better researched is a) application for depression alleviation and b) cognition modulation.
I don't know what skills you lack, but if they're web development skills, and if you want some help with your wonderful project, my email is in my profile. I cannot, alas, do anything about your insufficient-time problem.
https://onelook.com/thesaurus/?s=solitude
This is by datamuse who also does rhymezone (https://datamuse.com/)
Description https://indycast.net/about
TriviaOps :-)
I built a white noise generator on a timer, which starts up a little while before the expected disturbance, plays through it, then stops a little while after.
The core is powered by meta-programming, aka code that further generates code.
It auto generate typed client SDK with named types for API input and output. And it comes with JWT integrated out of the box.
Compared to traditional untyped restful API over http, it helps developer to prototype and evolve the application with inferred type hint.
Upcoming improvement will be runtime type checking with cast.ts [2] or ts-type-check [3]
[1] https://www.npmjs.com/package/create-rpc
Plus, the trains and tracks are very well maintained, so they create a lot less noise than you may be used to.
Since this is a tricky problem to solve, I built a quick fix solution while I work on the "real" version. The quick fix measures the average indoor temperature in the house using zigbee sensors and uses a number of weather forecast APIs to calculate the amount of heat lost from the house in a day based on the difference of outdoor / indoor temperature and the amount of solar irradiation. It runs at midnight and creates a 24h schedule based on the forecast energy price and expected COP. The heat pump is controlled with a relay from an ESP32. The algorithm/app runs on a raspberry pi and is written in Rust.
It worked surprisingly well last winter with some tweaking needed during very cold periods. And the heat pump only switches a few times per day now and makes very long efficient runs, theoretically greatly increasing its lifespan and simultaneously reducing my energy bill.
I'm still planning on building the better version I had planned based on a thermal model of my house, but that will require more studying and now that the quick&dirty version works so well the pressure is off a bit.
I made a really small simple tumblr clone social network, and a few months ago I was able to kind of bugily conect it with mastodon.
It has 400 registred users, of wich in the last month 20 have posted.
https://app.wafrn.net/.well-known/nodeinfo/2.0
This endpoint I added it not too long ago to be more "friendly" towards other nodes
Inspired by: https://github.com/daveebbelaar/langchain-experiments/blob/m...
[0]: https://de.wikipedia.org/wiki/Rettungsgasse?wprov=sfla1
Clearly that involves electronics and 68k assembly programming.
I have another script that reads the info from the tags and writes in back into the database. So I never have to set the cue-points/comments/scores/BPMs again for my tracks :) And all is self contained in the audio file.
That is to say, I admire your approach here. I appreciate that you've just gone with it and did what many people on here would look at and say "that's insane".
There's a lot of power in just doing something, in the environment that's most readily available to you, and not getting hung up on the best way to plan it out and do it and make sure it's reliable and durable. You're exactly where you want to be, and the other person is sitting back at the start still planning.
Thank you for sharing.
I bought Threes for $3 in 2014, and I still play it for hours each day -- on the subway, while waiting at restaurants, while watching TV, wherever.
A lot of people play 2048 because it's free, but it's not nearly as polished.
https://globe.adsbexchange.com/?SiteLat=##.####&SiteLon=##.#...
Regular plane noise is a regular thing where I live - I'm right under one of the regular flight-paths for a nearby very busy airport and very close to another busy airport.
One idea I've had for a while is to take my eInk raspberry-pi accessory and poll this data and have a constantly updating "what's overhead" display.
For me, most of my mental energy goes into my day job, so I'm often just tired of programming and tech stuff after hours. I tend to have to balance - either put my energy into work work, or work work can suffer while I put my energy into personal projects. I also have family and other hobbies that take up time, and there's only so much of it.
I've also found that if I'm not careful, I'll get too obsessive over this stuff and everything else suffers, so I have to try to keep it in check or I'll end up burned out, more tired, and have half-finished projects - which can be even more mental overhead.
Have you seen anything hornier?
>Such a shame it's a throwaway. They should keep it!
I expect he'll come again.
> Gallien steered his truck onto the shoulder
Here, "shoulder" is explained in Spanish as parte del cuerpo humano que conecta el brazo con el torso. I'm pretty sure the English sentence doesn't imply that the truck driver drove his truck over the hitchhiker's shoulder.
• Automatic turret to guard a pond against herons. They come during winter and eat many goldfish. This year was catastrophic enough I started developing a turret using a raspberrypi4 with a YOLO computer vision nnet with weights from Tencent (not fined tuned, I just look for big bounding boxes tagged as a bird). The "gun" is composed of a coffee machine pump and a 3D printed polycarbonate pressure tank. Pan-tilt mount using sg90 servos. I didn't finish the project because it turned out quite a lot of fishes survived, they were just very good at hiding.
I did create some static filler phrases stored locally (ummm, let me think, good question) to break the silence.
I'm working on this for months now, and I had to learn how to use tools like Fusion 360 and Kicad for this, which is incredibly fun!
I'm looking for a name for this product, current propositions are "a screen with holes" and "écran total" but ideas are welcome :)
I plan to make it general purpose so you can download and ePub and convert it to audio seamlessly.
[0] https://www.provideoinstruments.com/hdmi-to-rf-modulator-con...
I can admire this right here.
As a priority if you do try to solve problems that you and others share in some way, this has got to be the path toward potentially most widespread utility.
Regardless of whether you are actually on that path, which can be a more elusive yellow brick road than the problems you are skilled at solving.
No matter how cool it is there are probably some things that nobody else ends up using anyway.
There you go, you built it and it turned out to be just for yourself :)
Without any details I respect that as much as the amazing non-business context accomplishments in this topic.
Got an ESP32 board with Wifi and a relay, wrote a quick webserver, some ui to access through the phone and voila, no more need for a grinder upgrade. Took about three days (moved from arduino to ESP32 due to memory issues of a large css/js UI for iphone)
Github page here: https://github.com/iainctduncan/scheme-for-max
YouTube demos here: https://www.youtube.com/c/musicwithlisp
A recent demo of it in the context of Live is this one. https://www.youtube.com/watch?v=j0sKBA-Pv2c&t=1s&ab_channel=...
Lately I decided to jump on the ChatGPT bandwagon and added a feature that integrates with the OpenAI API to suggest replies to messages from her patients.
It was overall a fun project. It gave me the chance to explore the integration with WhatsApp Business API (used to communicate with patients), OpenAI API (used to suggest message replies), Discord (used to notify events).
Apart from the APIs, it has zero dependencies. It’s deployed as a static website hosted on GitHub. The backend is written as a set of AWS Lambda functions. Data is stored in DynamoDB. Frontend is vanilla JS.
I was having anxiety that was throwing me into some crazy spirals and I’ve started to document all my stuff and prepare for the worst. I’ve at the time even registered a company and domais in Iceland “eternity.is” so I cold literally have credit cards issued to continue paying for my domains, storage until kids could pick up from where I left.
Splitting Shamir secrets token for the “Root authority” and finding a way to manage quotas was the fun part the help me deal with the anxiety and let things go.
I actually use both: The Apple watch notification as well as my custom push notification to the Apple watch. The more I get up, the better for my health :-)
I am thinking of expanding it to be a notification light of sorts. Not for anything related to the internet, but for chores, like the laundry machine finishing, or reminders to take a break from work. It's helped me remember to grab lunch more than a few times this week. There's something pleasant about light notifications compared to vibrations or sounds.
I am working on making an advanced wifi enabled timer using an esp32. I love the idea of a dedicated timer, seperate from my phone, that I can use day to day. I have a basic display and webserver for scheduling countdowns/alarms, but I want to incorporate some sort of keypad and a couple input buttons. There's plenty of ways in can be improved.
I also have a first generation raspberry pi monitoring my washing machine, it sends me notifications when a cycle finishes. It uses a simple ultrasonic sensor and is hosting a web server showing a readout.
> • Hold z to make a currently-playing audio or video go at 4× (the fastest you can go before Firefox cuts off the audio).
Are these open-source by any chance?
I built something similar for NFL, it scrapes NFL stats websites (very few public APIs available afaik) and gives a 'fun index' for each game from the previous week.
I then obtain that game from a dodgy website and am able to watch it without any spoilers, but safe in the knowledge that it will definitely be a good game.
It was my first ever programming project and helped me learn Python, the code is complete shite but it works.
I still use calendar and reminder apps for one-off and time-sensitive tasks, but for recurring tasks, especially those with complex timing, the crontab syntax integrated into the bot is more powerful and easier to maintain.
The web app is a PWA so I can install it on my Android Mac and PC via Chrome browser without app/play store and access from anywhere.
I took it further by adding Webhoom API for the notification and a Chrome extension to share links from my browser to the channels.
People liked it (didn't try to market so much) but they wanted encryption so I have added end to end encryption as well.
I'm currently working on (on my spare time) big files support up to 4GB from any browser including live preview and video streaming for well known file types.
You can check it out here https://www.pushstaq.com
Can read some of the blog posts for more info.
(tl;dr: The output of these "transmitters" contains spurs you're not equipped to detect but which can indeed be problematic for others. Transmitters are regulated for sound physical reasons, some which are enumerated here.)
The range at which your FM receiver can pick up an FM signal may indeed be ten feet, but that's a product of the transmitter power, the transmit antenna gain, the path loss, the receive antenna gain, and the receiver sensitivity. To infer anything about one of those parameters (for this discussion, the transmit power), you have to know the other four, and you don't. (And neither do I. Even the measurements I'm equipped to make require a lot of assumptions and have significant uncertainty.)
Secondly, FM (radio folks would call this wide-FM) is particularly power-hungry because it occupies a relatively wide swath of bandwidth. Typically limited to 75kHz and in practice somewhere around 50 for analog stereo or just shy of 60 with RDS (which pifmrds can do). For example, a 104.3MHz station is actually transmitting anywhere between 104.225 and 104.375 at any given instant. This means that the receiver has to demodulate the carrier which may be varying all over that range, and it requires a fairly strong signal to do that. If the FM receiver loses lock, it doesn't mean the signal doesn't exist, merely that it's below the receiver's sensitivity.
Other spectrum users, like radar for example, may be dramatically more sensitive, and pick up a signal of the same strength many miles away. A mode that occupies less spectrum generally requires less power. They may also have better antennas (radar dishes tend to be tightly focused, that's the whole point), better receivers (local self-noise can be minimized through careful-but-costly engineering), et cetera.
They may also be above you, so while you see the signal disappearing as soon as you get on the other side of some hedges, there's no foliage between you and an airplane.
So while _for you_, the effective range may be ten feet, but for someone else, the signal may be a problem dozens of miles away.
Furthermore, and the whole point here, is that you're not just interfering with other users in the 88-108MHz FM broadcast band. (If you were, frankly, I wouldn't care one bit; there's little actual harm to be done.) It's that as a digital pin being bashed up and down at those frequencies, the resulting signal is profoundly not sinusoidal. It has much faster rising and falling edges, which mean the signal has plenty of energy in harmonics, not just the fundamental frequency of the carrier. My spectrum analyzer only goes to 2.7GHz and I was able to see (admittedly diminishing) energy up beyond 1GHz, which is both impressive in that the BCM chip's GPIOs can slew that fast, and terrible in that you're interfering with _everyone_ when you do it.
So, say you've told pifm to transmit at 88MHz, right at the bottom of the broadcast band where off-the-shelf receivers can pick it up. Your little Pi and random-wire antenna are also producing quite a bit of energy at 176Mhz (maritime VHF ship-to-shore and stuff), 264MHz (military air-band, adjacent to a satellite-earth-station band), 352MHz (more military), 440MHz (amateur UHF), etc. All the way up.
This may be counterintuitive, but that's why radio is governed by regulations rather than YOLO, and why even unlicensed toy transmitters still have to comply with harmonic-content rules.
Filter your Pi to knock out all those harmonics, and the odds of the Coast Guard or Air Force knocking on your door will plummet.
(Also, I've measured the power coming out of one of these things, and if you can only pick it up ten feet away, either your antenna is total crap, your receiver is deaf as a post, or both. Even after applying proper filtering which eats some power, I was able to receive mine on a pocket radio out to about 200 feet, which surprised the heck out of me and I added lots more attenuation until my most sensitive receiver could no longer see it at the property line. It's a fantastic toy for exercising RDS/RBDS receiver and parser code, but it requires a little care and knowledge to use it responsibly.)
Anyone can learn this stuff, and everyone should, especially if they're going to put it on the air.
Long ago, a current mirror to charge a 12v battery bank from a "12v" iPod charger, evading the usual regulator voltage drop.
More recently, a circuit to trip a solenoid when a bit of hot dog goes missing from two leads.
I needed two op amps for sensitivity, because over a day or so the hot dog dries up to nearly an open circuit. Still, only a handful of parts, on the smallest breadboard made.
Yes, I'm a walking cliche, a better rat trap. My only excuse is this was during the pandemic. I excelled at an electronics segment of shop class back in 1968 junior high school, and I never asked my parents for a kit to go on from there.
A collection of tools to pull in personal data from various sources, in the spirit of a "quantified self".
I just got it to a state yesterday where I can do do this: https://raw.githubusercontent.com/VitamintK/data-fetishism/m...
Source code: https://github.com/VitamintK/data-fetishism
Eventually I'd like to get it to the point of something like this: https://beepb00p.xyz/myinfra.html
(This happened years ago, I do not remember more details.)
Kudos on recognising “Fairmount” versus lobbing it in with Glen Park or Noe Valley. (I don’t /really/ have a complex about this - but the neighbourhood does have some interesting history!)
It's a solution to a personal pain point - discovering and getting reminded of all the hilarious & extraordinary knowledge that I keep discovering on Reddit.
These are the steps we took:
1. Get a twilio number
2. All incoming phone calls to the home phone are redirected to that twilio number [1]
3. If incoming number == grandma, request from an api endpoint the next relative to dial. Redirect her call to them.
4. If no one is available, play the voice mail
5. If incoming number != grandma, redirect the call to dad's mobile number [2]
[1] A child comment by macNchz noted correctly about "Selective Call Forwarding". This would have simplified the process and we could have skipped step 5, but our telephone provider did not offer it.
[2] Note that this is a bit of a compromise in the setup. The home phone never rings anymore and all non-grandma calls go to dad's cell. But they were happy to accept this.
2. This is more recent (in fact I haven't finished it yet): I have been working on a toolkit in the last few weeks that includes a scheduler, an event bus and a state machine library ([Cobalt](cobalt-ts)). Using these in conjuncion you can easily implement a workflow engine (that's what I'm gonna use this for). The interesting part is that it is implemented by using functional programming. Feel free to check it out if you need something like it (permissive license).
[zircon]: https://github.com/Hexworks/zircon [caves-of-zircon]: https://hexworks.org/posts/tutorials/2018/12/04/how-to-make-... [cobalt-ts]: https://github.com/Hexworks/cobalt-ts/blob/master/libs/hexwo...
But the biggest reason is that ethically, it somehow seems very wrong to trick my grandma that way.
Not sure why parent comment is getting downvoted though, it's certainly an interesting idea.
In our case, my grandmother always calls my parents home phone number. The phone provider only offers simple call forwarding, so we route all calls to the home phone over to a Twilio number. We have a very simple Twilio Studio flow that routes calls from my grandmother's phone number to the call handler script we created, and all other calls are routed to my dad's cell phone number: https://share.cleanshot.com/ywwhzJ8H
We are a little lucky in that we can forward calls from our landline to a cell phone. If your relative is calling you directly on your cell phone, your carrier would need to offer selective forwarding for this strategy to work
The app is just a search where you input the ingredients you have and you get a list of possible food you can cook with it. I crawled over 6000 recipes over the network. In fact I have over 120k recipes in Portuguese but can't display them due to legal restrictions. After some time I decided to create a site and open-source it:
I added some recipes in english as well.
Unmaintained code: https://github.com/maebert/SaunaControl
I set a Raspberry Pi with an IR led running an Apache server close to the TV. From my phone I would visit the Raspberry IP and send signals to the IR led to lower the volume.
* https://rancidbacon.gitlab.io/piper-tts-demos/#various_radio...
If the six speakers I selected for the demo don't match your taste in DJs, there's around 900 more in that voice model to try... :D
(The 3 audio players differ only in file format & whether I ran the output through normalization.)
Also, I was pretty impressed/surprised at the quality of their pronunciation of the meta-syntactic variables. :)
https://www.admiralty.co.uk/publications/publications-and-re...
OK then, that’s entirely your choice. Just don’t forget you started working on this cabinet for your own legitimate use, and there are many more people who share your same legitimate problem, but who can’t write software, and they will be SOL.
Might be cute to include some old original programming in your pirate radio!
https://archive.org/details/sherlock-holmes-1939-11-06-6-the...
https://en.m.wikipedia.org/wiki/The_Most_Dangerous_Writing_A...
So one app to rule them all. Current list of tools in the app are: - Todo list integrated with Pomodoro timer - Notes with ability to be converted to todo list - Pomodoro timer - JSON/SQL/XML/YAML/Protobuf formatter and error detector. - Converter from JSON to CSV and other formats. - Meditation/Gratitude general - Universal time clocks - Count down timer, focus timer, stopwatch
In development: - Unix time formatter - CloudWatch metrics reader (to monitor my other cloud apps) - S3 explorer (My own infinite cloud storage with no one reading meta-data or scanning my pictures/documents) - Cron explorer and scheduler
In process of putting it on app store. If anyone is interested in trying, DM me.
A fully featured group calendar that I use for myself
A collaborative organigram maker that I use for my kids class
A collaborative family tree maker that my distant and close family alike use to document every detail until (as of today) 1776
So it's much less stable than with the original PID controller which kept the temperature very stable, but surprisingly it doesn't bother us, proved by the fact that WAF is high. Which to be honest I did not expect.
I still have plans to improve on it by modeling the temperature drop in the house and making sure it stays within certain bounds. But that is for "later".
Then when it's time to collaborate on something, or when you need to keep the appropriate people in the loop, hopefully the right people just pop into mind. And if you get invited to a meeting with 5 people you don't normally work with, you can probably make an educated guess why they're attending.
- https://vermaden.wordpress.com/
Regards, vermaden
I guess this is why doctors don't treat loved ones. I was doing outreach, it never occurred to me to go back and check my site with fresh eyes. I wonder how many people I missed helping.
[1] https://github.com/anupamsaikia/HostBrowser
[2] https://en.wikipedia.org/wiki/File:PhpLiteAdmin_Main_Screen....
Its super easy to create a new component since all the JS and design is handed from the proprietary framework, and i have full control on the complete library.
The downside is that i have to create every component i want to use and i cannot share the library with anyone.
Nitpick: the company can use AGPL code wherever, it only needs to make the updated source code available to users. In many shops, devs would be perfectly ok with that, where legal depts are still mostly living in the world of "opensource it with MIT/Apache to make sure we can take it down tomorrow, just in case".
I grew up under a flight path, and now live... under another flight path. Luckily this one is used almost exclusively to land (much quieter) but my parents are still under a takeoff one. All airlines are supposed to follow certain rules to minimize noise, but many just flaunt them. Local authorities own the airport, so their interest in monitoring infractions is... very low.
Having an app that could detect and categorize bad actors, would be pretty cool.
It’s a Mac app, it works in iOS too, and it has an AR mode. You can point it a git repo to download and view all the files. Hopefully someone else may enjoy it.
P.s.: to the idea of highlighting word definitions, I’m working on personal dictionary building and visualizing as well.. imagine heptopod language but with words. Same tech, different code flow.
https://github.com/cmcconomy/iptv-filter
I since stopped subscribing to IPTV so the project is abandoned, but I have a couple of friends who still use it; I'd probably write it completely differently today - but it's still trucking!
It's fine: you keep doing you and finding your own happiness. Don't feel pressured into matching these folks, nobody expects you to.
So I built a scraping script in python that runs once a day and sends me an email the evening before a collection is due, telling me what I should place outside that day. It's been working great for three years now, with zero maintenance.
I considered turning it into a public service, but i don't want any pressure from neighbors when things eventually break (as they will, inevitably, sooner or later). And really this should be a basic feature offered by the local authority website, so I hope they'll implement it one day on their own.
It took me several tries with many different seeds, but I made it at last. 8000 points on seed 5706121. I like the simple but cool rotating cubes at the end.
I also like the non-minimized source code. It makes it instantly discoverable without having to find your repository (https://github.com/Kiryhas/memechain).
Looks like you did it without any external libraries which is cool! It looks clean and readable, and proves that developers don't need to download huge dependencies to create these types of games.
I have one minor suggestion. It would be great if you made the highlight a bit clearer when you are hovering over a matching cube. Sometimes it can ba a bit difficult to hit the correct spot. Maybe you could highlight the hovering cube as well in addition to the outline?
I could have used something like Safari’s reading list, but that wouldn’t scale to all of my devices. And I don’t like the idea of putting control of those links into a service I can’t delete.
This site literally solves one problem perfectly and beyond the occasional functionality upgrades (auto-fetching post metadata, a refresh button, and a little CMS behind authentication) it’s super light and useful for me!
> hah, editing to say that I really liked it. I'm stress a lot about how I phrase things and am very conscious about how concise am I when when I'm writing for an audience.
Same here. My fluency has improved quite a bit since I started writing daily, but things get much harder when I have to share my work. I'm trying to be more comfortable with sharing things when they're not perfect. Sit was an exercise in that. I wrote about it here: https://sonnet.io/posts/sit/
First boss:https://www.youtube.com/watch?v=zcbH7jt4w0w
Second boss:https://www.youtube.com/watch?v=IeEoQVT66t8
I am using cheat engine to get information from the game such as hero position, boss position, hero animation, boss animation, time since animation change, life, stamina, current rotation and the angle between the boss' heading and the hero. (to see if hero is behind or in front of or to the side/behind the boss)
When the boss or hero starts an animation i start a counter at 0. For every timestep that the animation is still running i increment that counter and feed it as inputThe AI has no knowledge about the lengths of the animations. It has to learn that.The animation names are converted to a one hot encoding and fed to the network
The different examples shown in the videos have only been trained for a few days in real time (only 1 instance of the game running). But the episodes are cherry picked. In the Iudex case it actually kills the boss almost every time, however Vordt is a lot harder to learn so these are the some of the kills that i have picked out.
Other games have APIs made for reinforcement learning so that the agent can take an action at each frame of the game. I have kind of hacked my own implementation and are actually doing keypresses with sleeps in between each step as i can't control the frames on a frame by frame basis.
I am using python and stable baselines for the reinforcement learning part. I made my own implementation of a "gym" for dark souls. Then i set up a lua script in cheat engine that opens a socket from this socket i read the state in my python script.
Simply text 1 (434) 404 6822 with an observation.
I hope what you’re describing never becomes a reality. People aren’t disposable tissues for your convenience.
They have different names for similar services. I think the one you want may be called CloudPRNT. I tried it a few years ago and it worked OK (had some issues with reconnecting when it lost the internet connection)
The idea has emerged from a personal frustration with umbrellas If you buy a too big and expensive umbrella (take for example a gulfbrella), you might recall that it's such a hassle to drag along - just by its weight and size. Also, its something that you will most likely lose during a company event, after one or two drinks.
If you buy a small and cheap version instead, you won’t get sufficient protection due to the small surface. In addition, such smaller variants tend to break quickly, and when this happens, you might as well not have dragged one with you in the first place.
Uses some fuzzy matching logic in an attempt to match it to a historical vehicle. Also attempts to look up Make, Model, Year and VIN based on the state and plate.
Been running pretty well for a few months. Can easily see history of a vehicle or search vehicles by make or model. Has come in handy once when someone in the neighborhood experienced a road rage incident and I was able to provide info on the car to the police.
Next step is to build “detections” for anomalous vehicles. Or weird behavior like a vehicle passing by multiple times in a given window.
Built with Python and HTMX cause why not.
It's a great tech that was sadly mostly forgotten when JSON took over because it was way easier to parse with Javascript.
a. Controlling YouTube. I used to have a hard time finding the YouTube tab midst a bunch of open tabs, and if someone would approach me at my desk (good old days when we had offices with people) I didn't want to open the tab to pause the song (or to play it again, or to go next/previous) so this extension would find the tab and show me a simple UI to control it. I later on extended it to be controllable via a hosted URL which I could put in an Android app. This was helpful because if I had to ever leave the desk and song accidentally played out loud, I can pause it from the phone. b. Controlling Jenkins. I had a bunch of builds running and it was painful to visit and see the status, again, amidst all the tabs.
HN is full of people with side hustles and hobby computing projects, some of which are pretty interesting.
But it's really OK to do other things after work, especially things that you enjoy.
Even computers are good for a lot of things other than software development. Games, for example. ;-)
It makes sense you listen for the sound of a plane / wait for a button press before making the call!
Seems like this would be best done with a receiver and monitoring that directly and/or exchanging the radio logging for API access.
I would have loved to have that (or even thought up of that) when my grandmother began developing signs of dementia. Fortunately, her signs weren't that bad before she passed away ultimately.
Your suggestion makes a lot of sense, I think I'll add 0.5 transparency to the cube the player is dragging when it can be combined with the cube under it. It's late so I'll do that tomorrow, stay tuned :)
Could you elaborate on 'start from a solution and keep expanding it'? I thought of it more like checking the field for certain patterns that tell if it can't be solved and generating fields until one passes that check.
Personally I am not sure if I like winning more than just combining the cubes together and moving onto the next seed if it can't solve the current one :)
Pre-generating seeds is a valid solution but since I don't want the game to make any network requests I don't think it would work for me. Brute forcing it makes me worried if it'd drain the battery.
I think I would rather add an opt-in (like a checkbox) option to make the game check fields for certain patterns that tell if a seed can't be solved and keep generating until there's a seed that passes that check. I think that way the game would still give you the occasional seed that can't be solved but statistically your chances would go up.
Regarding rotating the view, that would make it a different game and I'd like to keep it as it is. However, that sounds like it could be fun so please send me a link if you end up creating such a version! :)
It turned out to require rather more semantic parsing than I expected. Maybe its worth revisiting with the advent of large language models.
There is a much larger group of people (parents) who need a secure and convenient way to share photos. They are not as driven as the perverts, so they need all the support and user-friendliness that we can provide.
We should build the tools that help the parents protect their kids, and let law enforcement deal with the other group.
I can't promise a speedy resolution since I don't have an Android but I'll definitely look into it when I get a chance. You can share your details here, send them to me by email or open an issue in the repo.
I’m not blind but I have terrible time with directions and navigation. I’m gonna try it next time I have to stick to a general heading.
I believe it really helped me deal with procrastination, but of course the whole project was just a way to procrastinate.
I planned to make it a business, but many of its features are now built into OS. And Google doesn’t like it.
You can still get it for brave and Google chrome, but I’m no longer working on it. In case it you need it. The Firefox version is not good.
prodtodolist.com
Just open the app and scan a barcode and it'll give product info such as name, description, nutritional info, pricing across stores and price change past 30 days.
Built with React Native, InfluxDB, and go for the backend and scraper, products get scraped from all the stores every day and gets stored in InfluxDB.
-
Also built a desktop app for toggling ANC on my bluetooth headphones, the only ways to toggle ANC were a mobile app (which requires pairing to phone, thereby dropping connection to PC), or holding a physical button (which was next to the button to enter pairing mode so I kept accidentally pressing it), so I learned how to snoop on bluetooth LE and reverse engineered it with Android and Wireshark, it was a fun project and incredibly useful to me.
It’s funny, I used to write all the time and I loved it. I think I became a bit too critical of myself as I saw my site getting more traffic, and I got a bit too anxious to hit publish.
I should get back to it. I’ve been working on a visual editor which generates code you can flash on an arduino with the idea that eventually this could evolve into a little automated gardening platform, but I’m not fully convinced it would be received the way I hope it would. I know a lot of people are into automated gardening, but they might not be the people who would want to use this kind of platform. In any case, I might find out faster if I write about it and see what people think. My friends are certainly into it, but, they’re my friends! Haha. I need some strangers to laugh at my ideas, maybe.
I have gone deep on a few problems, like converting Nintendo 64 to MIDI+soundfonts (there are tools for this, but nothing turn-key) or enabling support for Farbrausch V2 (a powerful but tiny synth engine). There's really no point other than to solve puzzles with a very salient musical reward at the end. https://github.com/mmontag/chip-player-js
Is chatgpt a stochastic parrot?
No, ChatGPT is not a stochastic parrot. ChatGPT is a large language model that uses deep learning algorithms to generate text based on the input it receives. While it can sometimes produce nonsensical or inaccurate responses, it is not simply repeating phrases or patterns without any understanding of the meaning behind them. Instead, ChatGPT is designed to analyze and learn from a vast corpus of text data, and it uses that knowledge to generate responses that are intended to be relevant and meaningful based on the input it receives.
changes = !git diff $(git merge-base HEAD \"$REVIEW_BASE\")
Typically, that's: git diff $(git merge-base HEAD origin/master)
https://github.com/jaysoffian/eap_proxy
It's been running for years now out-of-sight and out-of-mind.
Which reminds me... I should probably take a look at those pull requests.
Your profile has your website which has your email. I will email you.
Thanks
Favorite feature we've built: "are you my cousin", where you choose 2 people in our database and it calculates how they are related. First time I got to write a search function outside of a classroom!
I'm sure Ancestry does all this and more, but it's nice to have something that we built that's just for our family. We also use it all the time to verify relationships/birthdays!
Did you test this? Because CORS aside, that sure does look like it will append the whole of page 2 to the body of page 1 and get progressively worse as one reaches the pagination of page 2. It would be more code (and memory pressure) but I believe the correct impl of any such trickery would be to reach into the actual table of page 2 and jam that into the body of page 1
The proxy allows any calls or texts from her number to send out with the proxy number. Any calls or texts from his number connect to her phone. All other communications are given a notice that they don't have access to call or message the proxy number and communications are recorded for court. It does not forward blocked communications to her phone. He continues to give out the number to harass her, but the family court judge gets a monthly report of all the attempted harassment.
I 3D printed a fan shroud for it and put an old (but surprisingly powerful) fan on there, and that worked ok. The issue, though, was that I wanted the fan to be quiet when the GPU was idle, and I couldn't figure out fan control on Linux, so I decided to control the fan speed via an Arduino.
I took a spare Arduino, some wiring, and despite never before programming anything for Arduino, I managed to hack this together: https://github.com/askiiart/k80-linux-cooling
It takes the GPU temperature, turns that into desired fan speed, then sends the desired speed to the Arduino over USB. The Arduino just controls the fan speed via PWM.
This was actually long ago but it stuck with me. Just now I realized what perfect analogy for life it is. You move towards something, something interrupts the journey and then you just continue, thinking you are moving in the same direction.
So if you do not want to allow this, then you must use something other than the AGPL. (Or maybe you could do some funky patching of the AGPL's terms, but you'd have to be careful to only do so by reference, since its text is copyrighted by the FSF, who only permit distribution of verbatim copies.)
Also, you should probably avoid calling it "fully free & open source" as you did in your original comment, since you intend for it to be neither Free nor Open Source in the sense ordinarily meant by FOSS.
It was tiresome to have to launch an extra application and inspect RGB percentages to derive what color I was supposed to see.
The colorimeter I made activates while holding down an inconsequential modifier key on the keyboard and shows the name of the color.
Now I can also quickly double-press that modifier key and copy the color value to the clipboard.
So I wrote myself an e-reader (in Kivi) that is aware of my vocabulary and integrates with a flashcard system. For more obscure words it just shows the translation in-line so that I can focus on the most vocabulary. I pick up way more words and phrases, and can enjoyably read at a significantly higher level than without it.
I want to take this further and play with the idea of an AI only Twitter. Where AIs interact with each other based on real news. Could be a fascinating game of life simulation haha.
The new, government mandated registration requirements for programmatic SMS use in the US seem to have essentially done away with all hobbyist use.
If you are preparing for Collapse, ensure you have multiple independent sources of electricity available. Solar, hydro, wind. If you are in a city you are better off with a storage room full of canned food since your hydroponic plants wont give you much food after power goes out.
A downloadable PDF would be more useful, sure, but already with what's up there, relatively-low-skill users could print the whole page and cut it up. And higher-skill users can read it to follow your thinking to get inspiration and kick-start their work on a similar solution. So even if you never add one more thing to that site, and even if all that happens is half a dozen people a year randomly find it by lucky google query, it's STILL a meaningful contribution to other people that you've made your thinking and your output available. You're already doing good work, both for your mom and for strangers who you'll never know you've reached.
Hugs for you, internet person, and high fives.
And, again, if you want any help with making a dynamic version, hit me up, email in profile. I'd be proud if I got to help this project in any way.
I also live right next to a train line in CH (that has exactly the same kind of rolling stock passing by as the ones captured by jo-m). These are modern commuter trains (no cargo and long distance trains), and are a lot less loud than you'd expect. A somewhat busy street nearby would be an order of magnitude more annoying.
Because there is a finite and small amount of legal steps, so it should not need too many iterations.
That is of course, if you only brute force the raw game logic. Simulating the steps with the UI would definitely drain the battery ;)
And yeah, if I get around to redo it in true 3D, I send you a link. I think if done right, it provides the same experience, just a bit more overview.
Used to yolov5 to detect vehicles and deepsort to track them, also got a rough estimate for the speed of the pass
heres the two part blog i wrote about it
ended up setting up Yolo with deepsort to track each vehicle pass, and making a cool dashboard to show stats, like speed of pass and graphs to show how busy the road is over time
Thanks :)
heh
I worked beautifully for a few years displaying Apple's "Find My" via a Chromium browser in kiosk mode. However, Apple closed off web access to Find My, so I've now redone it via Google Maps. The Google Maps version doesn't work nearly as well and the maps are cluttered with lot's of stuff you don't want to see, so I'm currently looking at redoing it again by using the Home Assistant app and API.
2c of feedback - I'd love to have an unlimited undo to be able to backtrack and try different paths woth the same seed; sometimes the game doesn't end even if there are no moves left; and related to that it won't hurt to have a "hint" option to show a possible move.
Ps. Also the 2048 game was a blatant rip of "Threes", which would've been fine had the 2k guy not decided to monetize it.
For a long time I wanted to listen to lots of different stuff, podcasts, sermons, YouTube videos, online courses. But I'd always forget about them and never got around to listening to most of them.
So last year I started tracking this in a Google Sheet. Initially just a link of URLs, then I added date added/date completed, length, etc. Recently I even added some custom menu items in Sheets so I can add items and mark them done faster.
I've greatly increased the amount of audio content I consume, even when I get in the car it's easy to select something to play next. But one conclusion: I add on average 4 items per week and I listen to only 3, so my queue grows unbounded.
There is a lot of stuff I am working on it and I am planning a port to using Gatsby instead.
Would appreciate if anyone has feedback.
Also, I wrote a bot that notifies me of stock price changes for stocks that I subscribe to on Telegram. I haven't fixed it as the code has had some issues recently and I plan to work on fixing it once I have the time.
Seems genuinely useful if it gets meaningful engagement.
I wanted to read all the ideas but it became hard to read.
So, your human interface is no longer a 1970's Xerox Alto. It's time to update your dot-emacs file. What might you're new software development environment look like?
Project wise, objective was to get me that laptop, usable for daily work, and start exploring aphysical-not-VR shallow-3D ergonimicly-small-motion graphic-artist-like UX for software dev. It was basically a lot of software and hardware spikes. Python juggling lots of optical tracking, and an electron udev-to-3D-window-manager stack. Arduino bits. Laptop and body barnacles. Getting from first-lights to borderline-usables was being a slog, and then covid clipped the in-person communities which was keeping it motivated. Maybe I'll get back to it someday. Status quo seems unlikely to state change any year soon. Though it will be nice to have way more GPU and usb bandwidth, 4K cameras, less-noisy hand-pose ML, better AR glasses, maybe a real 3D panel or at least gaming latency for the LCD shutters.
Project is here https://github.com/richard-hajek/environment-overseer/tree/b... the code quality is not amazing but it works haha
It's been a work-in-progress for a while. It vastly helps with my weekly plans. And as a side project to up-skill, what I'm still working on:
- UIUX and 'user flow', usability
- hosting + CICD
- integrations, optimization, caching
[1]http://cr2southstation.com/
That's the one killer app for Plex for me. I can get to my library when I'm on the road (music more than movies or TV).
Does Jellyfin do anything like this? Any other caveats if you've used both?
Haha I'm going to steal TriviaOps!
What is the name of the first number one single on the billboard hot 100 to include the voice of Bob Dylan?
This question was worth 110 points (points are 2000 / number of teams that answered), so only 18 or 19 teams answered it correctly out of over 300.
I know this sort of thing is tough to get right so I hope a bit of constructive criticism is helpful; overall it's impressive that you've launched a product that people find useful and I wish you all the best with it!
So I wrote a mobile app that lets me rapidly prototype games from my phone, so I don’t need to be in front of a computer to code.
But your intent, if you want to avoid for-profit organizations using your software, is to impose a restriction on users not to redistribute the software in certain ways. It is your right to add such a restriction to your software, but it is no longer FOSS, since that term necessarily implies an unlimited right to redistribution (within the law).
Actually, the new thermostat entirely solved the problem, by allowing a 2°F deadband instead of the 0.5° that the previous thermostat used. Now it will run roughly once an hour instead of ~12 times. This is not as good as your solution, but considerably better than it was.
I still use the Zigbee control to ramp the thermostat up and down at morning and night less aggressively than a native schedule on the thermostat, but it isn't truly necessary.
Of course, you can download the predictions from DFO too, e.g., https://api-iwls.dfo-mpo.gc.ca/swagger-ui/index.html
So I had to figure out a way to switch it off earlier than reaching the setpoint, which lead to my poor man's solution of just calculating the house's heat loss.
where all you do is input the queries your application needs and then it will automatically determine which columns are affected & do all caching / cache invalidation for you.
I have it to the point where due to Redis being able to push onto a list that only writes hit the database & it even will update the cache keys automatically so that after an insert or update the cache is still hot.
- our puppy would bark in his room
- I set up a web based interface to generate commands via the Linux utility espeak
- I trained him to be quiet when he the espeak "quiet" word played
- The first time I did this from the other room and he stopped barking, my wife was impressed
Redistribution is unlimited for all non-commercial use. This has been through legal review.
If you’re still confused, please contact me directly and I’ll be happy to answer any other questions.
I’m having difficulty parsing and understanding this sentence: how did this result in your display being posted on instagram without your knowing?
Anything else comes to mind?
But I think Death Grips is worth a show, given their reputation for live shows.
I'm already dreading standing in GA after they start two hours late, holding my pee to maintain my good spot LOL
Input: sunlight and (optionally, if not contaminated by nuclear fallout) air. Output: meat, dairy and crops.
> I have an older iteration of the system working in an outdoor greenhouse without artificial lighting.
I think this should be possible with such a system, with full composting (including every biological waste, even human excrement), air-to-water devices, underground temperature and solar utilizing temperature control system and many more things, all in one massive greenhouse. I don't think hydroponics is the answer as it is highly fragile (system exists in sensitive equilibrum) or require chemicals (requiring global supply chain) or depend on complicated tech (many failure vectors).
I wanted to know if it was safe to take my dog to play fetch in a field, if it's too muddy I end up with a very dirty dog. Uses weather APIs after providing location to the browser to tell you if it's muddy, and when it will dry up.
I stumpled upon a similar quest where my app had to calculate the walking distance between two coordinates (the client and the restaurant).
OSM seem to be the only good option, I could not find any better alternative in my case (Ruby).
People who can help and provide actually stepping up to support less able people is the best thing we can use to prevent real catastrophe, I think.
Coincidentally, a library called ODE had just been released, which did (still does) very nice physics modeling. After a year I had a sort of "robot construction kit" / 3D world editor and simulator GUI for ODE. I had so much fun building that app, and building random stuff in that virtual world, I didn't even start on the physical robot. Bipeds, centipedes (there's a dialog box to build N-pedes), snakes, a motorcycle, a couple cars, etc, etc.
If anyone remembers sodaplay from back in the day, I cloned and extended their GUI for controlling simple oscillating motions. And added a smooth waveform for "up, pause, down, pause, repeat" in addition to just sine waves.
There's a simple visual programming language for configuring the data flow from those simple wave functions to motorized joints in your contraption.
There's multilevel undo/redo for everything, because I had just bought the GoF patterns book, and the CommandHistory chapter seemed like such a great idea that I couldn't NOT use it.
It turned out really nice, I was super proud for a while... life moved on.
I dusted it off a couple years ago and got it to build with a modern version of Visual Studio. The C++ standard has evolved, and there are now a billion warnings, but it does build and run. Unfortunately I wasn't able to get the MPEG library and terrain library to work. And the screenshots and MPEGs from 2002 are long lost, so I haven't got much to show for it today.
But it is on GitHub if anyone wants to play with it: https://github.com/natewaddoups/juice
I’m very interested in soil-based gardening and cyclical systems too, but I don’t have enough space to really experiment. However, if I did have the space, I’d love to explore an aquaponic system in a large enclosed area. Perhaps a large geodesic dome partly dug into the earth to help stabilize temperature. The ability to generate a nutrient solution from a biological system is absolutely inedible to me.
Thanks for the link to Biosphere 2, this is really interesting.
if (document.querySelector("script[src$='/cloudflare-static/email-decode.min.js']")) {
{The source of that JavaScript file, minus the “remove the email-decode.min.js script tag” thing.}
}
Excellent point! It is true for most of the things I build, even though the intent is for the "thing" to see use by others, that the inception was a case of "scratching my own itch." And yes, even if the thing "fails" as something in the global marketplace, I still have the result to continue using for my own itch. :-)
I guess we'll agree to disagree on this, I don't think we can prevent real catasthrophe. We can prevent some (relatively small) amount of suffering though, and all that matters is we do the best we can. A mind-opening must-read imo article on Collapse: https://medium.com/@CollapseSurvival/overshoot-why-its-alrea...
edit: Also, my handwriting is horrible.
Android App: https://github.com/moosilauke18/PrintTodo API: https://github.com/moosilauke18/printodo-api Worker on PI: https://github.com/moosilauke18/printodo-worker
There's not that much in it because it was put on a bit of a break owing to a broken server a while ago, but it's back up again :)
Thank you for your feedback. The "Back" button allows you to go back to the initial state of the game so I'm not sure as to how I'd make it unlimited. Could you please elaborate? I'll consider adding a hint, just have to come up with the animation.
Never heard about the Threes game, that's very interesting. When 2048 went viral I remember it being promoted as a learning exercise from some book a student did while learning JavaScript.
No, some seeds can't be solved and the game doesn't verify them.
and another, more cosmetical - to reduce visual clutter, i'd hide those "add fact | task" links, and only show them when hovering over the card.
also, dunno if you already have it - would have a "all tasks" view that would show me all tasks from all the messages.
I use it everyday and some others as well. Which makes me happy :)
I had to create a bunch of very convoluted rules based on whether the preceding and following two words were verbs, nouns, adverbs, end of a sentence etc and with those I could be sure I was right about 95% of the time.
Eg before a noun it’s always his or her.
But some really do require a little intelligence beyond grammar rules.
Eg for ‘It is definitely his’
Both swaps make sense grammatically:
‘It is definitely hers’ or ‘It is definitely her’
You’d need to understand the context to get it right.
https://pine.fm/music/ChordGear
I rotated the inner ring to capture the sense that (for example) Amin shares two notes with Cmaj and 2 notes with Fmaj, so belongs between them.
You can drag the chord gear, click it for a kind of awful synth-piano sound that I had a lot of fun making, switch modes, etc. I actually originally made this in wood/acrylic:https://docs.google.com/document/d/1lwIS-1sPNyIpYM1nCcFkU9Iq... but I like how the online version renames the notes sensibly.)
Mostly I was just trying to explore music theory concepts, and have a few other toys at https://pine.fm/music
(also the code is gross; I've been a manager for almost a decade now and am rusty; you've been warned, lol)
I wrote a perl script for the terminal that permitted searching all of these items for requested episode patterns/Titles/numbers/cast. The search results include info from every episode where a case insensitive match is found. I also enabled running the episode's video in QuickLook or QuickTime. The search results were color coded to differentiate search/cast/synopsys info. (no color shown below.)
Simplest example searching for a director:
sg1.pl 'William Waring' -terse ( just episode numbers ) Search for "William Waring" was found in 13 episodes: 109, 131, 147, 156, 164, 177, 178, 185, 194, 196, 198, 202, 212.
sg1.pl 109 SG1 Episode=[#109] S5 E21, => 'SG 2001 Stargate SG1 S5 D5_5.m4v', "Meridian", 05/10/02, Director: William Waring, Writer(s): Robert C. Cooper, cast: [Amanda Tapping (Major Samantha Carter), Christopher Judge (Teal'c), Michael Shanks (Dr. Daniel Jackson), Richard Dean Anderson (Colonel Jack O'Neill), Don S. Davis (Major General George Hammond), Gary Jones (Sgt. Walter Harriman), Teryl Rothery (Dr. Janet Fraiser), Corin Nemec (Jonas Quinn), Carmen Argenziano, Jacob Carter / Selmak), Mel Harris (Oma Desala), David Hurtubise (Tomis)], Daniel incurs lethal radiation exposure when he prevents a potentially cataclysmic accident in a weapons laboratory on the planet Langara (P9Y-4C3) but the mysterious Oma Desala shows him that death can simply be another beginning. While the alien government responsible for the lab accuses him of attempting to sabotage their research the Kelownan Jonas Quinn tries to negotiate with SG-1.
So I created Torrent Hound https://federicocappelli.com/torrenthound.html a macOS app for searching torrents in 3 major search engines and with more advanced download options like multiple download and send to server.
After a bit my girlfriend and some friend started using it and gave me interesting feedbacks, so I made the app easier to use and with some features for helping less tech-savvy users.
The app is free and I'm happy to implement new features and add search engines if requested, any request or feedback can be done here: https://github.com/federicocappelli/TorrentHound/issues
It's abandonware now, because it was a PITA to get the flight data from behind a clunky paywall, and an Echo Show could do voice-driven stuff more easily. Maybe I could revisit it now and put it into an e-ink display instead, and use Flightaware or FR24 API...
In the mean-time, here’s a lunch and learn video I made to show it to work people.
I just wanted a way to save these messages in a way others couldn't read them.
We had just started to learn Java. I used the basics I picked from school to write a cipher program which would take some plain text, a pass key and generate encrypted text. Although, I didn't know at the time (but realized couple years later) that I actually coded a little extension of our age old favorite Caesar cipher.
This brought back so many memories!
At least The standards were supported (eg. 4-20mA).
Again, sorry. And glad You toppled it.
Write or edit any post as a note in Bear, give it a tag so it gets published as a blog post or a new page, run one command and my site is updated.
The software is available as AGPL licensed open source.
I blogged about it, if you'd like more details: https://joisig.com/bearly-a-cms
After making some experiments in positioning the website, it managed to the second place in some searches. Nowadays it has had no crucial updates for almost a decade (really old and ugly), nevertheless still has many daily visitors. https://txopi.com/clima
I must also add that the game is bloody awesome. Been playing it daily, now a part of the daily routine. Thanks for making and sharing it!
Then just keep splitting them until you have a full the game. You'll need some intelligence in deciding which cubes to split and where to stack the split cube.
But if you reach a state where you can't split anymore you can must backtrack and try again.
I've just adjusted the highlighting of the cubes, give it a look. For feedback you can contact me here, by email or open an issue on GH. Hope you enjoy!