This morning I dreamt mostly about being at work, though there was also some stuff in there about talking to Renee about in-between Sonic levels and dates, and an earlier dream which I remember less clearly was more Faxanadu/Minecraftey.
The Sonic part was about this level that resembled a place from an earlier dream. Maybe that earlier dream had been about taking subways or busses? I seem to remember a dream like that, and maybe there was a 'yellow line' that I transferred to that took me to the place that was like this level. That dream would have been years ago. But anyway, this in-between level had you going down in front of a cliff. I guess there were a lot of...jumps and stuff. And going fast. Well, the cliff was brown. I remember that much. And then at the bottom, as you exited to the right to get to the next level, the sky was blue and there were trees and stuff, because the next level was an outdoor one with a lot of action near the top of the screen, because you'd be climbing over a lot of peaks.
The Faxanadu part was about this alternate route just before or during 'the third stage' of some game, except I wasn't thinking about it as a game so much, but it was clearly inspired by Faxanadu, because it took place inside a giant tree. And the place at which you could take off onto this alternate route felt similar to the location of the first dungeon in Faxanadu (the 'tower of Trunk'), and was also right next to a town where you could go and buy some armor and maybe talk to someone who'd encourage you to take the alternate route to avoid violence.
I don't know if the alternate route ever met back up with the rest of the game. Maybe the alternate route was going on dates? Or maybe it led to where I ended up in the Minecraft-ey part of the dream.
The Minecraft-ey part wasn't actually all that Minecraft-ey. At one point I was editing it from a top-down perspective, which had primitive, blocky graphics. I was changing impassible blocks in an area to the south to brick to make the brick theme more consistent there. It was sort of an advanced area to be in, and bricks mean difficult. I probably figured that because in SMB3 the final castle is red brick and that's super cool. Anyway, between the bricks there were a bunch of monsters. Maybe red and black fuzzies, like from Mario.
And then some other stuff happened to the southeast, or maybe that was a previous dream, and that's all I remember about this first part.
The work part was about working at JHT, though it was very different. I had gone into the office to fix something, and then forgot that I didn't need to be there, so kept working late into the evening.
I worked at a desk in a side-by-side row of desks, and above the desks was a walkway with a railing that maybe circled the room, and there was a stairway up to that kind of in the middle of the room. both upstairs and downstairs of this room had a wide doorway to the west, let's say, that connected it to the rest of the building. Down that hallwaay there were smaller hallways to the side, and my bedroom was to the side of one of those.
Someone was looking at a couple of racoons on their home security camera, playing on top of, like, their car or something. I could see those racoons on my own home security camera, too (meaning we lived in the same place??), but from mine could also a second pair of creatures and a chicken. I had like 7 cameras going.
The other thing I was doing at work was working on some new Phrebar project. We had started working on it after years of not working on it. I had wanted to rebase the whole thing onto a newer version of Phrebar before we got too far, but, as I told my boss, "They told me not to work on stuff without a ticket, and Amanda never made a ticket for it". So now they had done a bunch of work and rebasing would be more difficult, as would making sure everyone switched over to the rebased code.
(In real-life Phrebar projects I've merged in the Phrebar changes to projects created with earlier versions of Phrebar (PHPTemplateProject, actually). Not sure why in this dream all the rebasing was necessary! Maybe the original project had been created in the wrong way so I was 'fixing' the history.)
Eventually I went up to my room because it was time to go to bed. I had passed Chris Burtch on the stairs, talking to someone about how he liked the company because "we help people heal," to which the other person made a 'okay nice joke' face.
Once upstairs I walked down the halls to my room. Convex corners had a plastic cover over them, which, as I recall, the convex corners at JHT actually do have. I was thinking about Phrebar, and about how it would be nice if I could get this new project fixed up to use updated Phrebar as the last thing I did at EIT before I left. And as I went to bed, I thought about simplifying the template project even more. Basically we just need the "src" folder, right? And an optional "config" folder. And maybe one for dynamic data, in case you're using the filesystem for that...
I continued to think about that after I woke up and was still lying in bed. I still use Phrebar for my own projects so it might be nice to update and simplify it. What I've come up with is, in order of importance:
README.md
- Or.org
, or whatever.src/
- As much of the source code as we can jam in there, including class definitions, 'views' (HTML templates, whether they be PHP or something else), and maybe even bootstrap code (which is currently in the project root). Follows the Maven convention ofsrc/
(module)/
(language) for maximum flexibility and capacity to have stuff crammed into it.Makefile
- Specifies how to build stuff; might just delegate to build.js on some projects.build.js
- Specifies how to build stuff.config/
- File-based configuration, if needed.util/
- Command-line tools (scripts and/or binaries) used for development/deployment.bin/
- When the project is itself a command-line program, scripts and/or binaries to execute it go here.scripts/
- Yet another alternate place for command-line scripts.data/
- Runtime data storage, if needed.www/
- Web root, for projects that need one.vendor/
- Composer packages.node_modules/
- Node packages.ext-lib
- External libraries (e.g. jar files), whether checked in or downloaded during the build process.
Ideally, there would just be a README, with instructions on how to install
the relevant parts, depending on your project.
Maybe the template project could have multiple branches representing the different components.
You just merge in the ones that make sense to you.
And maybe I could get rid of the stuff that copies
PHPTemplateProjectNS
into the project's namespace.
Note that bin
, scripts
, util
,
and even src
to some extent overlap in purpose,
though the names imply slightly different things.
Maybe scripts/
is best at conveying "stuff that's run from the command-line"
without implying purpose.
On some projects things are further complicated by containerization—some
scripts are intended to be usued inside the container, and some outside.
In these cases I've encouraged that most scripts should be written such
that they work whether you're running in a container or not,
and the scripts that manage the container itself be kept separate and to a minimum.
Maybe in util/docker/
.
If we kept going with this, it could resemble the structure of src/
.
scripts/build/
, scripts/docker/
, etc.
Though ideally rules to build things are all in
Makefile
/build.js
,
so that dependencies are explicitly declared.
Regardless of where it ends up, generated stuff should generally be .gitignore
d,
and make clean
should remove it.