I stumbled across Amaranth a while ago. It’s been years since I’ve done FPGA programming, and I haven’t had a reason to get into it again.
But Amaranth seems like a cool paradigm instead of AHDL/VHDL.
I stumbled across Amaranth a while ago. It’s been years since I’ve done FPGA programming, and I haven’t had a reason to get into it again.
But Amaranth seems like a cool paradigm instead of AHDL/VHDL.
For point number 2, security through obscurity is not security.
Besides, all issued certificates are logged publicly. You can search them here https://crt.sh/
Nginx Proxy Manager is easy to set up and will do LE acme certs, has a nice GUI to manage it.
If it’s just access to your stuff for people you trust, use tailscale or wireguard (or some other VPN of your choice) instead of opening ports to the wild internet.
Much less risk
The repo: https://git.sakamoto.pl/laudom/http.sh
An example:
#!/bin/bash
echo '<html><head><meta charset="utf-8"></head><body>'
if [[ ! "${get_data[example]}" ]]; then
echo '<form>
<input type="text" name="example">
<input type="submit">
</form>'
else
echo "<p>you sent: $(html_encode "${get_data[example]}")</p>"
fi
echo '</body></html>'
Yeh, I can’t believe an emergency service (which I would consider a government agency) is using a URL shortener.
No wonder scammers also use URL shorteners. People get desensitized to what they are doing, masking the actual URL
I’m pretty sure a lot of that is based on what is cached locally. I remember reading something about it.
Finding & clearing the local cache should fix it.
Saves them a ton of bandwidth I guess.
At scale, it can be considerably cheaper.
Limit data access according to security policy and some basic filtering from the request. It’s not a huge amount of processing for an API server to do.
Web pages, desktop app, mobile apps, other servers can all use it to access the data.
Template rendering is then done on the client side. So processing for that is done on the client, saving a lot of compute cost - meaning the servers can respond to more API requests.
Data transferred is lower as well. A template that gets populated by the client using data from an API request will be overall smaller than the full template rendered server side.
The client apps can then be entirely managed separately from the server apps, without having to be tightly integrated. This allows the front end team to do what they want, and the backend team do what they want - as long as the API endpoints are correct.
For most things, an SPA isn’t required or even desirable (which is why server side rendering of SPAs is a thing).
But SPAs should give a better experience to users, and can be easier to build.
Oh, a real engineer? ducks
Default config is defined in the firmware. It can’t be deleted or changed (well, easily. I think there is a reseller option to have a custom default config).
The “no default config” means the default config will not be applied after the reset.
If you reset it again without checking “no default config”, then the default config will be applied.
“No default config” is very useful for applying your own config script. It gives you a blank canvas, making scripting a lot easier!
I have my “config.rsc” file that has the required configuration. And I have a “reset.auto.rsc” file that only has the command to reset the mikrotik with no defaults and to run the “config.rsc” script after reset.
“filename.auto.rsc” will be executed as soon as it gets FTPd (it’s a feature of mikrotik).
I use a bash script that FTPs the config.rsc file to the mikrotik, then the reset.auto.rsc file.
Makes it trivial to tweak the config then apply it, and I get all the config for the devices in easy to edit/diff script files.
To me, something like visual studio is an ide.
Out of the box it can run and debug c# programs. I can step through line by line, I can add breakpoints, I can watch variables.
It is a great experience for developing c#.
To get vscode to do that requires a lot of configuration.
Sometimes all that config is done by only 1 plugin.
The fact that there are really well made plugins for so many different languages and frameworks is vscodes power. I don’t just get a js/ts/node/deno ide, but it can be super tailored to Vue/react/svelte/quasar/nuxt/next/whatever.
All while in a familiar editor, and without having to install another program.
That’s what I mean by vscode not being an IDE.
Vscode has the ability to be an IDE, but it’s 3rd parties that actually do the work to achieve this.
Platformio is an IDE based on VSCode.
VSCode CAN be an IDE.
But it isn’t natively an IDE
Back when Blockchain was first a huge hype bubble, there were companies that added “Blockchain” to their name, or announced a pivot into Blockchain tech, and watched their stock value soar by a few hundred percent (with market value being many times their revenue).
I had googled a list of news articles, until I found this:
https://www.sciencedirect.com/science/article/abs/pii/S0165176519301703
A noteworthy example: https://www.cnbc.com/2017/12/21/long-island-iced-tea-micro-cap-adds-blockchain-to-name-and-stock-soars.html
Anyway.
That’s the bubble.
Over-valuation. People taking advantage of the hype. People jumping on any opportunity to “not be left out” or to “get in early”.
AI has uses.
Everyone is throwing things at the wall to seeing what sticks. Not much of it will.
Marketing are capitalising on the hype.
As a hobby developer, I feel like I’m just gluing libraries together to get what I want.
Server hardware does.
I think dell Rx30 are only just getting to EOL, and it was released in 2015.
Although, buying an Rx30 before 5 years ago would be in the 10s of thousands.
Refurbished Rx40 and Rx50 are somewhat affordable.
If you want remote access to your home services behind a cgnat, the best way is with a VPS. This gives you a static public IP that your services connect to, and that you can connect to when out and about.
If you don’t want the traffic decrypted on the VPS, then tunnel the VPN back to your homelab.
As the VPN already is encrypted, there is no point in re-encrypting it between the vps and homelab.
Rathole https://github.com/rapiz1/rathole is one of the easiest I have found for this.
Or you can do things with ssh tunnels.
For VPN, wireguard is very good
You can set a static IP on the router, disable it’s DHCP, and have pihole manage DHCP with the routers static IP as the gateway
Like I said, impressive work.
Converting science to shaders is an art.
I guess your coding standards follows scientific standards.
And I guess it depends on your audience.
I guess the perspective is that science/maths formulae are meant to be manipulated. So writing out descriptive names is only done at the most basic levels of understanding. Most of the workings are done on paper/boards, or manually. Extra letters are not efficient.
Whereas programming is meant to be understood and adapted. So self-describing code is key! Most workings are done within an IDE with autocomplete. Extra letters don’t matter.
If you are targeting the science community with this, a paragraph about adapting science to programming will be important.
Scientists will find your article and go “well yeh, that’s K2”. But explaining why these aren’t named as such will hopefully help them to produce useful code in the future.
The fun of code that spans disciplines!
Edit;
Om a side note, I am terrible at coding standards when I’m working with a new paradigm.
First is “make it work”, after which it’s pretty much done.
Never mind consistent naming conventions and all that.
The fact you wrote up an article on it is amazing!
Good work!
Interesting.
I love creative applications of shaders. They are very powerful.
In my opinion only, but willing to discuss.
And I’ll preface this by saying if I tried to publish a scientific paper and my formulas used a bunch of made up symbols that are not standardised, I imagine it would get a lot of corrections on peer review.
So, from a programming perspective, don’t use abbreviations.
Basically working on naming.
I can read that TAU is the diffusion rate due to a comment. Then I dig further into the code as I am trying to figure something out and I encounter tau. Now I have to remember that tau is explained by a comment, instead of the name of the variable. Why not call it diffusionRate
then have a comment indicating this is TAU.
A science person will be able to find the comment indicating where it is initialised and be able to adjust it without having to know programming. A programming person will be able to understand what it does without having to know science things.
Programming is essentially writing code to be read.
It’s written once and read many times.
Similar with the K variables.
K is reactionRate.
K1 is reactionKillRate.
K2 is reactionFeedRate.
Scientists know what these are. But I would only expect to see variables like this in some bizarre nested loop, and I would consider it a code smell.
The inboundFlow “line” has a lot going on with little explanation (except in comments). The calculation is already happening and going into memory. Why not name that memory with variables?
Things like adjacentFlow and diagonalFlow to essentially name those respective lines.
Could even have adjacentFlowWeight and diagonalFlowWeight for some of those “magic numbers”.
Comments shouldn’t explain what is happening, but why it’s happening.
The code already explains what is happening.
So a comment indicating what the overall formula is, how that relates to the used variables, then the variables essentially explain what each part of it is.
If a line is getting too complicated to be easily understood, then parting it out into further variables (or even function call, tho not applicable here) will help.
I would put in an editted example, however I’m on mobile and I know I will mess up the formatting.
A final style note, however I’m not certain on this.
I presume 1.
and 1.0
are identical representing the float value of 1.0?
In which case, standardise to 1.0
There are instances of 2.0
and 2.
While both are functionally identical, something like (1.0, 1.0, 1.0)
is going to be easier to spot that these are floats, as well as spotting typos/commas - when compared to (1., 1., 1.,)
.
IMO, at least
I can say I’ve never glorified suicide. When I’ve been suicidal, suicide is literally the only logical solution my brain can arrive at. It’s completely irrational in hindsight, but it makes so much sense at the time.
I don’t think I have ever not-watched something due to content warnings alone. But it has alerted me that there may be issues, so it doesn’t surprise me when it comes up.
It’s from 2015, so its probably what you are doing anyway
I’m just surprised this isn’t a systemd joke