mdude: Yellow and green ink blot style image. (Default)
(In response to https://hackaday.com/2019/03/30/hash-and-roll-your-way-to-secure-passwords/ to keep a reminder of my mistakes on my own blog.)

Ah. Some weeks ago, I've talked about using such a similar system with someone over IRC, except considerably worse in that I was actually using SHA-*1*. That's obviously something I'll want to switch away from, and the person I was talking to also made the point stated above that it's in many ways less secure than a password manager. The main thing is that I thought hashes were somehow less vulnerable to certain classes of attack where an attacker has both the encrypted and unencrypted versions of at least one password, but I've since been told that it's actually easier to derive the password from a collection of hashes and secrets. Also, it seems that relying on potential collisions with other passwords, which is the mechanism I was thinking would thwart the above attack, is itself actually a huge liability.

So yeah, this isn't a system I think I would recommend now, and one I plan to phase out in my own use. Apologies to anyone who has ever spread my bad ideas and/or taken the blame for them, I'm sure there's more where that one came from. Anyway, before using this system, I was making my passwords directly with Diceware, which produces passwords generally in line with the XKCD comic recommendation. That's something I'll want to go back to for at least more crucial passwords.

On that note: Something I've been doing to help remember Diceware/XKCD style passwords is to make them six words long, then remember them as both a sequence of three word pairs and as a sequence of two word triplets. The trick here is, it's easier to remember those small chunks than an entire password, and by having them overlap this way, the end of each chunk is the start of another, which helps jog my memory of the rest of that chunk, giving me the start of the next. Seeing how well this works for longer passwords is something I should have been trying out over a year ago. If that works out, maybe it's what I'll use for getting into Keypass.
mdude: Yellow and green ink blot style image. (Default)
Something I've wanted to do years ago was to take a cellular automata, probably Conway's Game of Life, and do a particular set-up with it. First, take a very large but finite board, non-wrapping, with spaces outside the board treated as dead. Then, once every X ticks, with X being some number preferably larger than 3, but easily larger, the whole board is shifted in one direction, let's say down so it's like they're falling, by one cell, with the cells at the top being filled in randomly and the ones at the bottom simply being discarded.

Then, you have a system where patterns can only remain on the board if they move in the opposite direction of the shift, at the same speed! Given that, I would like to try having the shift be large enough to allow for larger/more complex ships. Then, as the iterations continue, there would be a continued input of new patterns into an environment with a clear selective pressure, which to me seemed comparable in concept to simple genetic algorithms, so I figured this would somehow lead to more sophisticated patterns developing over time.

However, at the time I somehow wasn't able to really invest myself in wrapping my head around scripting for Golly, so I let the idea sit there for a while. Recently, though, I saw a video on chemical evolution ( https://www.youtube.com/watch?v=mRzxTzKIsp8 ). The model of chemical evolution, with fatty acids accumulating in water due to neither floating or sinking, reminded me of the idea of having a CA setup that selects for patterns that neither rise nor sink on a board that constantly scrolls.

Also, I'm now slightly better/more experience dealing with scripting, and think I might be able to pull this off now! So I'll want to try it out soon, though I'd also like to keep writing all these ideas I've mostly kept in my head for a while.
mdude: Yellow and green ink blot style image. (Default)
Oh hey, someone let me know I ought to consider describing what I made in https://mdude.dreamwidth.org/1762.html in a way that actually makes sense instead being mostly incoherent rambling about my thought process.

So, the the main idea of how the function acts as analog version of the Fredkin/controlled swap gate: It takes some sequence of N values, and swaps them around by X places. If X is a whole number, the values just get moved that many places over, wrapping around. So in such cases, the output for function(X) can equal to Input[N+X]. But when it's not, we need to have some way of producing outputs that lie between the outputs for Input[ceiling(X)] and Input[floor(X)].

So, easiest way to do that would be to make the output for function(X) equal:
(Input[floor(X)]*(1-(fractional part of X)))+(Input[ceiling(x)*(fractional part of X))

The only reason I was relying so much on max and min was because I know those are easy to implement in mechanical analog computers, by just letting either input push or pull the output so that the output pushes/pulls as much as whichever input is doing that the most. While I'm at it, here's a version that ditches the modulo function at the cost of only being accurate over a limited range of input: https://www.desmos.com/calculator/or2gurny0c

Edit: I should probably point out that I later realized I'm still doing this wrong, so I'll need to keep working on it. For some reason it just seems slightly too hard to keep all the parts I'm working with in my head at once while translating it from geometry to code. I think it might work if I take some earlier ideas I was trying and go "something something Viviani's theorem" at it, but that'll wait until I feel like getting back to it.
mdude: Yellow and green ink blot style image. (Default)
To continue writing down ideas I ought to have written: I like the idea of making computer parts from scratch, impracticable as it may be for producing a machine which meets contemporaneous performance expectations. I like the idea of reversible computing. As well, I also enjoy playing with the idea of analog computing. These things entwine together in a series of thoughts that begin with observation the observation that a Fredkin gate, in addition to being reversible, outputs the same number of each value as it receives as input.

This means that even if the two values are represented by a phenomenon which embodies different energy levels, the output can embody the same amount of energy as the input. Further, it can do so without the output using different energy levels for each value than the input! If there were a continuous version of this, I figured it'd be pretty handy for designing analog computers.

The reason I thought this was that I was already looking into ways to make reversible analog computers, as I wanted to see if the reversibility would result in substantially reduced noise in the system and thus a higher precision of results for a given level of quality of components. That in turn just seems generally useful for making computers from scratch.

So, the first thought I had was that what I'm doing would have something to do with affine transformations, as earlier research and discussion called my attention to the fact that affine transformations are both reversible and continuous functions. Specifically, rotation seemed like a good option, since if I'm taking the two inputs to be swapped as the X and Y coordinates, and the controlling input as rotation, then rotating 90 degrees should do something like swap them? More like invert them both, really.

At the moment, I was more interested in getting around the part where I don't want a circular arc, since that clearly wouldn't preserve the part where the sum of the outputs match the sum of the inputs. So I tried looking a thing where, before rotation, perform a transformation where I take the Chebyshev distance of the point and turn it into a point with the same angle from the origin but with Euclidean distance, and reverse the transformation after.

This ended up making the function for the X/Y coordinate inputs over the rotation input equivalent to what I'll call trapezoid waves, since that's what they look like, and a simpler way to implement the result is to just make a triangle wave and then use min and max functions to clip off the distance. However, I notice then that this still doesn't actually conserve the sum-invariance property I wanted! So then I thought, hey, if I rotate it 45 degrees normally first, then just do a the triangle waves without clipping them, I'm now going around the edge of a Manhattan distance circle instead of a Chebyshev distance one!

So that actually worked, but only if I presume the signal values can be negative, which might not be true of whatever computing media I go with. Otherwise I'm stuck in the upper right corner. I guess I could just use a different offset for the triangle waves so the function for any given X/Y input just covers the diagonal line where X+Y is constant. Maybe that actually would work? Something about it just didn't feel right to me, though.

So, I decided to make a function that takes X,Y, and Z inputs and well as the control/rotation, and does a function that for each input is just a triangle wave clipped at the bottom, but for all three of them ends up tracing the perimeter of a triangular wafer cut from a cube. So there we go! Maybe some time I'll try using it for a thing. Also, here it is on a web-based graphing calculator: https://www.desmos.com/calculator/rslh0cvwrk

Edit: Just realized I could generalize this to rotating arbitrary points by having each input other than the control ran through the function alongside its two neighboring inputs. Though also, it seems that I'm wrong about this version of the function doing what I want at all, as actually checking (I1+I2+I3)-(O1+O2+O3) shows that it in fact not produce a function f(r) that only produced an output of zero? So I'll need to keep working on this I guess.

Edit2: Oh, nice, I managed to fix the thing I was making! Working cube slice gate function: https://www.desmos.com/calculator/15wnxj923y
mdude: Yellow and green ink blot style image. (Default)
Alright, so: Let's start by taking the equation for the Bekenstein-Hawking Boundary Entropy/Bekenstein–Hawking black hole entropy, which happens to saturate the Bekenstein bound. That supposedly has some implications that lead to people wondering about holographic universes, though while the universe having a possibly-infinite tree of nested black holes, the boundaries of which represent space time regions, sounds pretty interesting in and of itself, that stuff goes over my head a bit and it's not what I'm going to focus on in this entry anyway.

I'm just going to play around with a model universe where the Bekenstein Bound is instead the Bekenstein Equation and see what I get from that! Also, I'm going to be using Planck units, partly for simplicity in general, but also because the Bekenstein bound (as presented in the Wikipedia article, anyway) doesn't seem to prescribe a particular unit of entropy/information for determining, say, how many bits of information you get by multiplying a plank energy times a sphere of plank length radius, just a general proportion.

So yeah, we doing dumb unit conversion with a presumption of a Bekenstein Equation relation of [entropy]=[area]/4=4*[Pi]*[mass]2. Taking just [area]/4=4*[Pi]*[mass]2. Now let's look at vacuum energy! Let's ignore its actual value for now, but just look at how it's in the form of [energy]/[length]3. Now, area is [length]2, so we can rewrite the preceding space-mass equation as [length]2/4=4*[Pi]*[mass]2. Further, in Planck units, the mass energy equation is just [energy]=[mass], so we can further write it as [length]2/4=4*[Pi]*[energy]2.

So, let's simplify for length first. Multiply both sides of [length]2/4=4*[Pi]*[energy]2 by four, get [length]2=16*[Pi]*[energy]2. Now take the square root, of both, so you have [length]=sqrt(16*[Pi]*[energy]2). I'm not entirely sure, but if I understand the communitivities involved correctly, this means we get [length]= Plugging in 4*sqrt([Pi])*[energy] as a replacement for length in the [energy]/[length]3 unit value, we have [energy]/(4*sqrt([Pi])*[energy])3. Checking this expression simplifier, it seems that x/x3=x-2. If I'm again understanding communitvitiy right, we can change this to be [energy]/(4*sqrt([Pi]))3*[energy]3, and then to 1/64*[Pi]3/2*[energy]-2.

Trusting the expression simplifier again, it says 1/64*X^(3/2)*Y^-2 evaluates to (1/64)X3/2Y-2, therefore 1/64*[Pi]3/2*[energy]-2 evaluates to (1/64)Pi3/2Y-2. Actually, I should see about just plugging in some stuff from earlier to see if it matches up. The expression simplifier says that (16*X*Y^2)^0.5=4YX0.5, which looks much nicer than what I was working with before, and Y/(16*X*Y^2)^3 to... oh dear... (1/4096)Y-5X-3?

Well, I was going to go ahead and do a similar thing for the other side by simplifying and substituting energy, and then using that and the fact that both resulting values equal [energy]/[length]3 to arrive at either the same energy/mass to area equation as before, or to a different one that had maybe a different balance of exponents for length or something. Now, though, I'm not really sure what to do to make sure I'm doing my math consistently. I guess either check with someone else, or try finding some math analysis software that can help me keep track of what I'm doing better?
mdude: Yellow and green ink blot style image. (Default)
When reading about tax systems and the reasoning behind them, sometimes I like to try my hand at making up my own approach to them. Recently I told my dad about one that I think could be nice as a substitute for tariffs, and he said I should write it down somewhere, so I guess I'll try doing a series of posts on various tax ideas I have. Not that I think these are necessarily the best way to go based just on my personal guesswork, but maybe they're interesting enough to be worth talking about and critiquing.

Anyway, as far as tariffs go: The idea is that such a tax protects local businesses when imported goods manage to be cheaper, to preserve the ability to produce things internally. And it would seem that currently, a major contributor for prices of imports being low would be the workers who make those imported goods having lower wages. I'm wondering if it would be useful to have something that's like a tariff, but proportional to the difference in minimum wage between countries. And instead of the government keeping this tax, it would be distributed directly to the workers who make those products.

If actually actually keeping track of where the money needs to go is feasible, it'd be nice in that it'd fulfill the goal of a tariff domestically, which is to keep the prices of locally produced things competitive, while in the countries targeted by it, it'd result in increasing the purchasing power of their own domestic market, reducing their economy's reliance on exports to begin with. This benefit to the foreign country's economy would hopefully make this form of tax less of a problem in terms of international relations.
mdude: Yellow and green ink blot style image. (Default)
So, I was thinking about how in 3D modeling, if you're just mucking about in a program with little to no direction, one problem you might run into is dissolving some vertex, point, or face, and end up with an object that has poorly formed or connected faces. I was wondering if maybe there could be a mode of 3D editing that was a bit more resilient against that. At the same time I was wondering if it'd be a fun thing to play with a silly rendering system that drew things geometrically instead of breaking things down into triangles even though there's plenty of reason no current 3D rendered does that.

Then I considered that if everything is being rendered as a collection of triangles, maybe everything could be represented as a collection of tetrahedrons? Like maybe any 3D solid one might make in a rendered could be topologically identical to the outer boundary of some fully collected set of cells within a tetrahedral honeycomb? I'm not entirely sure, but either way I think a 3D modeler where you connect tetrahedral cells and distort them to correct proportions via continuous map functions could be pretty fun to play with and be good for sketching out low-poly designs. Guess that'll be something to work on sometime.

Edit(Sept. 12, 2017, 12:03PM): Thinking about it later, I thought of a probelm that might come up with doing this, but then I forgot it. So yeah, I'll see if it's fun to play with anyway and keep trying to think of ways to just kind of toss data at a renderer and somehow tend to get shapes that avoid clipping with themselves without really trying just because of hwo the math works out.
mdude: Yellow and green ink blot style image. (Default)
Something I've been playing with is the idea of computer programs which produce other computer programs via probabilistic selection. Basically similar to the idea of Markov chain generated text or procedurally generated images, but with code.

The previous instance I created in SmileBASIC for the 3DS, which was lost when the 3DS broke and I replaced it. For output, I only got it to print numbers, which were calculated by a series of randomly generated math expressions. Constant values were added, and later variables, with a simple naming scheme of [variable type][index number] so as to easily keep track of what variable names were in use by simply counting the number of each variable type created.

To begin with, though, I was testing the control flow system with calls to the RND in place of expressions. Each time a code block deliminator was selected, it would then be decided whether to go one nesting level up or down, based on the length of the program and the current nesting level depth. The type of code block was chosen when starting it, and remembered in a stack for when it was exited. When exiting a nesting layer was chosen when there were none left, the program end was written.

This produced amusing enough results for a while, though now that I'm starting over I think I'll try things a little differently, and as I'm making it a little more complex I figure I'll write down my thoughts somewhere before I go far in it, which is why I'm doing exactly that here. I'm using javascript this time, mostly so I can easily upload it to link to various people I know without them having to get a particular 3DS program to run it. As such, I'll be making some use of objects and whatever other elements of javascript that seem handy.

While I could have done so on the 3DS, I think this time I'll make an effort to focus on graphics, and try imposing a simple control structure to generated programs, working towards something that could possibly make things vaguely game-like with a much higher probability. I'm thinking at the very least setting up distinct input, process and output phases for the main game loop, plus maybe a setup and maybe a menu system. I'd like it to veer a little more towards inscrutable nonsense than not though, so aside from that I don't think I'll be hard-coding anything like lives or objectives, maybe not even a particularly designated object to be a player character.

Might want to limit the number of draw functions their are though, to help give things a more unified graphical style per generated game despite the chaos of it. I do know that I'll want output phase functions to operate on specially designated variables that don't get read outside that phase and are blanked at the start of it, to better separate the processing in it from the actual process phase. A sort of arbitrary designation, but it's something I thinking could be useful in organizing my manually made javascript games, and it just seems like I'd be more interesting in the kind of quirks created by such a system than by one that makes graphics randomly throughout the program.
mdude: Yellow and green ink blot style image. (Default)
AI is a fun subject to learn about. I've long liked mechanical systems, and autonomous ones in particular. I first wanted some sort of robotic NPC so I could play games cooperatively with my siblings instead of competing against them. I also had the impresion that I was more itnerested in closed loop control than open loop, but ran into the problem that I couldn't really practice electronics that relably since no one would let me mess arounjd with a soldering iron. In any case, now my siblings are moved out anyway and I figure I could start out by making a video game with sophisticated AI instead.

So that's something I'd like to start out with first: Making, or finding, a simple multiplayer game environment where I can test out all kinds of AI for NPCs. Basically, an AI GM, maybe one that could coordinate a group of NPCs toward furthering a plot. Maybe even eventually even making a team of LARPing robots, but that seems comparitavely distant. For a start, I guess it would make sense to see if I could make an AI system that can perform simple creative writing exercises, and see if I can go from there to a simple form of collaborative storytelling. Then try to put in things like maps and stats as they're needed to keep track of whatver's considered important.
Page generated Sep. 1st, 2026 05:09 am
Powered by Dreamwidth Studios