I just finished this season of American Gods, and it has really made me question my relationship with strawberries. I am an inveterate optimist when it comes to buying fruit at the grocery store, and inevitably some of my purchases end up rotten enough that I throw them out. Strawberries are the worst; they are cheap and attractive at the store so I buy a ton, but then they go bad in a few days even when kept in the fridge. For years I have been regularly throwing out at least a few strawberries each week. What dark, Fragarian god have I been nurturing with these sacrifices?
The Audubon Contingency. Tech Hut, Mark I
After a few months of experience with techno-druidism, I've decided to do a preliminary review and write up my thoughts for the many others who will wish to follow me down this path. Overall the experiment has been a success. For my green house, I first tried Home Depot. They did not in fact carry green-houses, and instead only had depressing and dark huts made out of plastic and failure. Next I searched Amazon, using the Piraha's long house as the model for my new green house. I was able to find a decent one for ~$200, and it covers a 10x10 area which is plenty for my needs. So! How did it turn out?
On the positive side:
- It is perfectly viable to work there during both day and night hours. I feel that I've been significantly more productive and clear-headed since moving out of the poison-house.
- At least during winter, the greenhouse effect is great. On a sunny day, temperatures inside the greenhouse are 15-20 degrees warmer than outside. You can be lounging around in a tank top and shorts in the middle of January. If you have any form of SAD, I would highly recommend it.
- It is easier to sleep at night. The effect is akin to the effect you feel when going camping; the increased sunlight during the day and the increased darkness at night really kicks your natural instincts into drive and makes it tough to stay up too late. I'm usually good about falling asleep, so your mileage may vary on this one.
- Similarly, it is much easier to keep to a regular, day-night sleep cycle. Sleeping in is much harder (due to the sun and heat), and going to sleep "early" at night is easier. So far I haven't done a cycle-flip (e.g. reversing my day-night cycles) since moving in, whereas before I would change my day-night cycle by 360 degrees every month or so.
- On clear nights, the moon is pretty through the canopy.
- There is a certain amount of insect life that enters the place through osmosis. By and large this isn't so bad, but you do need to adjust your sensitivity to bugs. Just accept the fact that whenever you go to sleep you will immediately be covered by spiders, and move on.
- It doesn't deal well with cold temperatures. The walls of the greenhouse provide very little thermal insulation. Once the outside temperature reaches ~45 degrees, bundling up is no longer enough to sustain you while you are in front of a computer. I have a heavy sleeping bag out in the greenhouse, so I can at least sleep out there when it is cold, but I don't do even that once it gets down to 40 degrees or so. I'm worried that my delicate Texan extremities will get frost bite.
- It won't deal well with hot temperatures once the summer comes. I'm going to have to explore different solutions to this in a few months, e.g. dressing less, have the fan on me, and making more openings in the greenhouse to help the heat disperse.
- It does not deal well with high winds. The experience reminds me most closely of that described from an Age of Sail novel, where a ship is being tossed around in a storm and absolutely every wall is moving around like it is possessed. So far the worst I have dealt with is ~30 mph winds. I'm not sure how the greenhouse would fare if it was in a really windy location.
- Security is a potential issue. I live in a very safe neighborhood, so it is not a huge concern for me. However even where I live I feel better doing things like A) bring your comp inside if you leave for vacation, and B) keep a katana by your bedside in case ruffians try to assault you at night.
- When placing your greenhouse, look up. Make sure it is not under any large and creaky branches, any branches with berries, any branches that birds might want to rest on, etc. Just avoid branches.
- Before moving in, consider your setup in terms of air-flow, sun lines, and sight lines.
- Even being "outside", air flow is important. You can carbon-dioxide up a 10x10 room fairly quickly without good ventilation. I've placed my computer chair and sleeping bag so that they are as close to the entry way as possible to maximize airflow to me. I also put in a $15 Walmart fan to help circulate the air.
- For your computer, you don't want the screen to be in direct sunlight. I keep the monitor facing away from the primary sun-lines. I've also done something where I hang a bed sheet down the middle of the greenhouse, that way it blocks the worst of the direct sunlight. Otherwise you won't be able see your monitor during the mid-day hours.
- For sight lines, consider how visible your monitor will be for your neighbors. My assumption is that my neighbors enjoy hardcore porn as much as I do, so I've angled the monitor/greenhouse openings so that they always have a good view.
- Setting up the greenhouse was relatively easy and straightforward, and overall I found it to be very well designed. Creating a floor for the greenhouse to rest on was the much more difficult part. To provide the floor, I dug up and leveled a portion of the backyard. On top of this I added a layer of playground sand from Home Depot; it lets you get the surface smoother and raises it above the surrounding ground by a bit. After that came 1x1 stone tiles, 121 of them. There are about $1.20 a piece from Home Depot, and a giant pain to move and emplace. On the plus side, the tiles also come in brick red, so I used those tiles for where my computer would be. Should help it go faster. After the stone layer, I added a layer of anti-weed fabric ($20?), and then on top of that two layers of plastic sheeting ($10). These final layers help keep bugs and moisture from coming up through the floor. The greenhouse provides enough weight to keep these layers all in place, and I placed many stones on the edges of the greenhouse keep it from flying away during high winds.
So, I am maybe 80% happy with the greenhouse. This Spring I will try out a second iteration, this time utilizing the powers of dirt-bags and cob!
One weird trick to make you an ever so slightly better programmer
We have all run into situations where, while trying to solve a problem, we write a bit too much code. Maybe it is a utility method that it turns out we don't need yet. Maybe it is a possible solution to the problem that we decide against for reasons of performance or readability or style. Maybe it is a line or 5 of printf/testing code that you think might come in handy again. Rationally, we know that this code is very unlikely to be used in the future and is making our code base messier. Emotionally though, it is unpleasant to kill your babies, and it can be very easy to just comment out the code and leave it in place, with the thought that then the code will be there for you in the future when you will surely need it.
One effective way to handle this to keep an extra tab open in your text editor. Whenever you have code that you do not need now (but that will be surely vindicated by history), cut the code out and paste it into this special file. This keeps your code base clean, but is also gentle to your emotions. Your babies are not gone they are just on vacation. Then, a few weeks later when you need to re-start your computer, you can check this file. It will be filled with pages and pages of code that you did not actually need, and you can realize yet again that YAGNI. I've found this to be an effective way to make it easy to make the right decision about leaving extra lines in the code base.
The Audubon Contingency
I haven't made much progress in the last 2 months, mostly due to the new house. Some of that has been due to the time spent on cleaning and repairs, and much more of it has been due to fumes(mold?) that cause me all sorts of problems. At low levels it causes headaches, tiredness, and impaired thinking, and at high levels it causes shortness of breath, dizziness, problems with fine motor control, and then all the low-level symptoms ramped up to 11. I've made some repairs that seem to have helped, and I've done some cleaning which seems to have helped, and I've supplemented the above with air-purifiers and filtration masks. Even with those changes though I'm not sure the inside of the house is tenable as a long term prospect. So, there is only one option left to me.
I must become a techno-druid. I'm buying my first greenhouse at Home Depot today.
Even in exile, I will not give up the dream of my home land. I will continue with other repairs to see if I can reduce/further pin down the source of the fumes, so that one day I might return. Or I might rent the house out to someone who is less sensitive to VoC's than I am, and then peer in at them from my backyard-hut. Still not sure.
Ok, I went ahead and gold-plated the yak-shaving, and made ShallowDream into a more generally usable tool. I'll try placing it on Itch.io, maybe the Unity asset store and see if anything comes of it. I also added a landing page to this website for ShallowDream (see header!). I might even try to make an actual landing page for it, like in the style of every other landing page and without cat pictures taking up the top 40% of the screen space.
Ok, so I more or less finished the art tool mentioned previously. Right now I'm calling it ShallowDream, since it is kind of a simplistic tool for aping what Deep Dream does. The images are fine, but it lacks the flexibility, and potentially the speed of DeepDream. ShallowDream does require human artistic input in selecting the basis elements to use for the transform, and since it uses single-threaded Unity to perform all the graphics work, it realistically won't become any faster over time unless I do a large overhaul. To put it another way, I think its primary window of usefulness is only between now and when the first commercial/user version of DeepDream is released. And going back and doing more Google searches, *now* I find all the articles mentioning how to get DeepDream running on Windows that I somehow missed on my previous search.
Which then produces results like:
I'm not going to lie, I'm pretty jelly of those beautiful, beautiful results. Anyway! I'll try to upload some pics/gifs of ShallowDream in a bit. It wasn't a complete waste; it does produce reasonable images, and you can import the "shards" used to make up the image into a Unity project, so that you can then apply more effects to the constituent parts in Unity. E.g. if you have a bunch of gear sprites as your shards, you could set them all to rotating to produce a neat overall effect. And I did learn more Unity (specifically how it is a continuing PITA to work with the file system & non-Resource textures in Unity), and improved the code base in general. For instance, I made progress towards having a base framework that I can easily share between Unity apps so that I'm not losing the functionality I've built up so far. Ok, 2 weeks of Yak shaving are over. Maybe. I kind of want to sell the thing on the Unity App store now, and if I do that it will need some more polishing.
Ok, tomorrow I will generate the rest of the professor images using ShallowDream, and maybe put a pulse effect on them. Should be fun!
Problem: the art I'm using for the professors is terrible; the ~20 images I am using are all inconsistent and mis-match-ish.
Solution: Create a tool to munge existing art into a consistent style. Sort of like Photoshop filters, but slightly more powerful. Or to put it another way, like A Neural Algorithm of Artistic Style but somewhat less powerful. I would have gone with the neural method, except that it seems like it is, at this point, a royal pain to set up for Windows, and I'm not quite ready to install Linux & dual boot just to use this tool. Also the neural method is (at least right now) very computationally expensive, with a single attempt taking 20 - 60 minutes. So! Instead, I will try to implement an idea that has been in my CommonPlace book for a while, to take a series of basis images, and then use them to try to re-create the original image as best as possible. It's basically the Fourier transform (assuming I remember what that is at all) but with jpgs and kittens instead of boring math. So, yes, I'm ready to get started on this app. This is definitely the most efficient way to generate the 20 professor images. :)
Uh, so it has been a while since I've updated anything about Chant Savant. On the plus side, I have been steadily and slowly plugging away. There should be more about that soon I hope!
For this entry though I just wanted to compliment the Unity Editor. I've become more familiar with Editor, some might even say intimate, and one of the things it does really well is how easily you can extend the Editor and add new functionality to it. I've added a few simple tools to the Editor to help out with common UI tasks, and it has really been eye opening. Now I'm looking at Visual Studio and all of these other programs I use and thinking "I could just add this little bit of scripting, oh, but wait, it doesn't have an easy way to let me do it." Moving past that disappointment though, I'm at least starting to think more about how to extend the various non-Unity editors that I am using.
Oh Art. Art art art. After another few days of photoshopping, I think my art and design abilities might finally be approaching the point, not where I am good, and not where I am learning to be good, but where I could finally be starting to think about the subject in a way which might lead to learning to be good at it. Now behold! My most recent and favorite creation:
It is a bit pixelated, but that's just the gif capturing software I'm trying.
This weekend I ran a simple, one-off Pen and Paper adventure that my RPG group had a lot of fun with. I thought I would write it up if others wanted to enjoy it too. The basic setup is that the players take the role of Slimes/Gelatinous Cubes. They are setting off from a well-established Slime community, and venturing out into the unknown depths of the dungeon caverns in order to found their own Slime colony. Oh, and their character figurines are marshmallows! The game has lots of sugar, slime, and throwing Skittles around.
Huzzah! After some initial trepidation, I'm starting to enjoy the hand-to-hand combat against my balcony wasps. Armored a heavy jacket, gloves, a tennis racket, and faith, I am taking the fight to the enemy whenever they land. So far I've killed four of them, 2nd level can't be too far away.
The war against the wasps continues. They are cagey foes. So far they have resolutely avoided my wasp trap, both when it was baited with sugar water and with bannannas. Soon I will be forced to take more direct measures.
Pokemon lied to me, compressed air is not an effective attack against wasps. I thought the wasps would be quickly frozen by close range compressed air, but nope, they just get annoyed for a bit about struggling against the air current, and then they fly off.
Chant Savant art
Ugh, it has been a terrible few weeks. The Kolache place that I like to walk to closes down at 2:00 PM, which does not fit my schedule at all. For one, the day isn't at its peak warmness till 2:00 or 3:00 PM, which means that even if I wait till the last minute and leave at 1:00 PM, it is still colder during my walk than I would like. For two, after a long walk I never feel like working, so I'm stuck on the horns of this dilemma of whether I want to go for a nice walk and lunch, or stay in and try to be productive. Anyway, I think I have mostly exhausted their selection, so perhaps my kolache hunger will abate with the coming of spring.
The one bright spot has been a program called Hexcells, which is a sort of neon-ish, highly glowy pixel art painting program produced by two programmers. I picked up Hexcells due to some suggestions on Reddit, and the program has been a real joy to work with. Hexcells is relatively simple and easy to learn (especially compared to the great beast Photoshop), and Hexcell lets even programmers like me produce decent looking pixel art in a fairly fast fashion. I quite literally have negative art skill, so the fact that Hexcell lets me make acceptable looking icons and such is a real accomplishment. The program is only $20, and I'd recommend trying it out if you have any interest in making pixel art or other abstract imagery. They have a demo too, but I only used the demo for ~3 minutes before throwing my money at them.
And as you may have guessed from the above, I've given on trying to make art in the sort of iconic, runic, stained-glass fashion that I linked to in the last update. It turns out that there is a thin line between runic and childish, and I am unable to comprehend or cross that line. All I can do is look at the final products I was producing and go "Hmm, that looks like it was made by a five year old." So, like all the indie devs before me I've switched to a more pixel art style, enabled by Hexcell. Some of the game images I can draw myself, while others are modified or composited versions of Creative Commons works. So far I've been happy with the results. For the first time in my life I've made a halfway-decent background/floor image! As you can tell, I'm very excited. I mean, the results are not great works of art by any means, but they are a definite step up for me.
Hmm, what else. Now that I have some general art direction/process in place and a sort of vertical slice of the art, I've been thinking more about what sort of story and meta-layer to place on top of the battle layer/main-game-loop. The rewards that you build up by playing the game are fairly straightforward; more Runes, items to improve stats, and Creature-pages in your grimoire that give bonuses to certain creature types. The story for the game took me way longer (too long) though. When I first started thinking about the game way back when, my idea was that the story would be about a somewhat hapless or comical cultist, sort of like Black Mage from 8-Bit Adventures. More recently though, that hasn't really been resonating with me and I've been brain-storming for alternate justifications for the battles. The answer, obviously, is to draw from the source material and make it into an epistolary game. I.e. have a log entry about some sort of horror, battle, further log entry, battle, further log entry, boss, then start a new journal/chapter. Something along that pattern. It gives me plenty of source material to draw from too, and just fits the genre. Perhaps not the most original sort of game framing/story, but I think it should be serviceable.
So, that's the next step, developing a story-beat generator and generating opponents to go along with it.
As part of my continuing quest to re-invent the web stack one part at a time, I moved all of my hard-coded HTML files into a simple site generator. Most of the web pages are now generated based off of some settings and a big old XML file. This should make it easier to get a consistent look and feel for the pages, and it should make it easier to make further style changes in the future. It's also helpful since now I can write an update for Chant Savant, and have it automatically placed on both the home page and in the Chant Savant page. I don't have to repeat myself and deal with the same content in multiple locations. Oh! And I have pagination and footers now, so that the content is broken up across multiple pages and I don't have 5000 lines of text on a single page. It was not yet a problem for the home page, but the size of the pages was becoming an issue with the Book Review page. Especially when trying to use the NeoCities online editor to modify the thing. You could just hear my CPU regretting its life choices each time that the web editor fired up for the Book Reviews.
Chant Savant update
Just another quick update about Chant Savant and Unity. I've done a bit more work and added a basic set of Runes, and the tutorial scenarios, and some supporting infrastructure (i.e. dialog boxes and pause games and some more structured services and initialization and such) and a main menu and level transitions. One the one hand not a lot of work for 1 month, on the other hand I've been learning a lot about imgur, so I've got going for me. :) For the next phase I'm actually trying to add some semi-final graphics to the game. I'm hoping to use a style similar to this, since A) I like it B) it lends itself to composition and C) I think I might actually be able to create pictures that style myself. Or at least something close to it.
A now for the regularly scheduled Unity jank. Overall I've really been digging the platform. In particular the way the Unity Beta lets you design UI's is great, it is fast and flexible and looks neat and makes a lot of sense. I've only been using the UI for relatively simple things so far, but with the way you can mix and match and composite elements has really been fun and you can see how you could easily make more complex elements with it. The anchor system can be a bit confusing, but I'm not sure if that is accidental complexity or simply required for the problem they are solving. Still, despite the above love, every week or so Unity will reveal another "wat" that it's been hiding. For this month we have:
- Equality: I'm running the game, and I get a null reference exception. Ok, I look at the code, which isn't that complex, and it's like well, it is logically impossible for that value to be null. Thirty minutes later I find the reason, Unity has overriden the equality operator so that inactive/removed GameObjects report that they are null. :( After reading some blog posts I can *kind* of see the reasons why they did it (so that you don't have to check if a dead/inactive gameobject should carry out its logic), and why they haven't fixed it (it would break lots of existing project code), but man, way to kick the new users in the nuts.
- Find: I spent the longest time trying to figure out why I wasn't able to look up new objects that should have been created in the Scene. Certainly it's because they are the first Prefabs I am using, or maybe it's this new UI element's fault? No, it's this weird thing where if you make an object inactive, then the GameObject.Find() call won't actually find it. My understanding is that you can never, ever look it up again? Which can't be right. Lol, anyway it seems like you need to keep a reference to the object or an object path to it if you ever want to use it again. So, now my objects never go inactive, they just get shunted off to the x=10000 dimension, waiting for their moment to be moved back into the view area.
- Order of Script Execution: During the previous weeks with Unity I'd built up this head-canon about the order that scripts are executed in. The GameObjects in the scene are processed from top to bottom in the hierarchy, and inside each GameObject the scripts are executed in the order that they are listed. So when I'd add a new script to an object, I'd try and move it around in the script list to the place I thought it needed to be. Lol, nope. It's all completely random! Or rather it's not completely random, but depends on some combination of your machine, time of day, the names of scripts, the order in which the scripts and GameObjects were first created, etc. etc. Great Unity, just great. The long and short of it is that I've made my own simple initialization system on top of Unity's. It's worked well so far. This way I can just have X number of initialization stages (rather than the 2 that the default Unity objects have), and then just place the initialization for each object in the phase that makes sense. It's a lot cleaner, and keeps most of the initialization in code, which I like.
- Debugging: And of course, as usual the debugger will just flat out crash the Unity Editor about ~5% of the time. Make sure to save and backup your work before you do anything too crazy.
Snap back to Chant
So, after a pause due to health reasons, I've decided to start adding updates again for the New Year. I've mostly been working on Chant Savant. I took the previous prototype, and moved it to the new Unity Beta. Their UI was just too beautiful to resist; I couldn't bear looking at my XNA code base's terrible widgets any more, and I couldn't bear spending any more time re-inventing UI wheels in XNA. Overall I've been very happy with the move. The newest versions of Unity and Visual Studio actually give you decent debugging facilities, so you're not just putting in printf statements like a goddamn neandrathal. Unity does still crash occasionally when you attach the debugger (i.e. not just your program, their actual editor crashes and destroys any unsaved work), but once you get use to saving frequently it is is usable for debugging. I've also adjusted to Unity's code/project organization style, which in practice works much better than what I was doing before. In XNA I was sticking with MVC, and separating the model from its display and so on, which is great and all, but requires a lot of extra code and thought. Now I'm doing things the Unity way, which is just to attach random bits of code everywhere. :) More seriously, it's nice since rather than having the modeled object and its associated display and their communication, you only have the one object. It works pretty well. Unity has also been nice about adding networking, since Photon seems like a good pre-built solution to that. I have to give up the fine-grain control of the perfectly synchronized clock work mechanism I had going in my last code base, but hopefully the out-of-synch issues that arise from that can be papered over relatively quickly.
Anyway! For Chant Savant, I've also changed the game so that it is real time rather than turn based, and rather than being HearthStone-ish it is somewhat closer to a tower-defense game where you are summoning the creatures to battle against your opponent's stream of creatures. There's probably a term for this stream-vs-stream, since I've seen it in some simple web games. However I don't know the term yet. So far things seem ok? I think the real-time works better (is more immediate and spectacly, at least relative to my other projects). Real time also lays the ground for other games later, where you could have additional forms of input battling against the voice-control creatures of Chant Savant. For instance, Kinect or other weird inputs could be pitted against voice chat. Today I've been adding different lanes for creatures to stream down; over the next few days I'm adding more Runes, and hopefully some starting scenarios to introduce people to the game. Teaching will need to be a big part of the game, since it really does require a lot of learning from the player relative to most tower-defense type games. E.g. it looks like a tower defense game, but in many ways is a language learning game.
Minor Text Munger
Ok, a small project is close to being complete. The project is called Err-Text, and is one of my first ventures into analyzing and modifying text. The idea is to take text, and then apply styles to it (e.g. Common-Grammar-Mistakes, Misspellings, 4Chan, Orcish, Rabellesian, etc.) to generate new text. The original project motivation was to create a sort of more advanced Dis-Emvoweler, where you could degrade text in more subtle and perhaps more fitting ways than just removing the vowels. I thought it could be useful for forum moderators or possibly people with terrible senses of humor like myself. As I worked on it though I've also enjoyed adding styles which are more humerous or possibly interesting or improving of the original text.
The project is really meant to be one of a pair; the second part will be Irr-Text, and will generate HP Lovecraft/Necronomicon like texts, similar to the ones found in Annihilation. Hopefully the second part will go faster.
Oh yes, and everything is terrible. For some reason there aren't any good, simple dictionaries in C#, instead all they have are these massive NLP programs meant for your PhD research. I finally found a datafile in WordNet that I could read and use, but it's a long way from perfect. In some ways it has too little information (doesn't realize that "crushing" is a word, only that "crush" is a word), and in other ways too much (it says that "are" is a noun, since apparently "are" is a really obscure unit of measurement). (EDIT: ok, I'm an idiot, slightly different search terms produced a wealth of excellent dictionaries.)
And then there is Unity again. For a second time I tried using Unity to provide a web interface for my app, and for the second time it was a mistake. Unity doesn't let me highlight text changes like WinForms do, and it does not yet support .Net 4.0 (which was released years ago), and so I have to downgrade all of the utility libraries that I am using to support Err-Text. Oh, and the web-version doesn't allow the Serialization libraries, so that's another downgrade I had to put in place for the Utilities. Hmm, what else. I tried out another of the Unity GUI libraries, nGui, which is supposedly better. I bounced off of it though, as like a lot of the Unity stuff nGui is very WYSIWIG oriented rather than code-oriented. For instance, here is the absurd procedure that nGui usese to create a new button through code. I did at least get Visual Studio working with Unity, though I'm still not advanced enough to actually debug using Visual Studio. Instead I've been using logging statements to debug the GUI, like some mud-smeared tribesman.
I've been continuing to work on smaller projects, though for the most part they are not ready to publish. The most finished one is a sort of My-First-Amazon-Crawler, to help a friend with an Amazon store who wanted to find potentially interesting listings. This project is kind of the reverse of the usual project, in that I'd only publish if the project was not a success. :) We'll see how well the new listings sell.
WightBabyMaker web version
Ok, I made a web build of the project, but it comes with its own dark price. Unity will let you load arbitrary images from the web; however to prevent Unity from being used for cross-domain attacks, it can't manipulate the loaded web-data. So you can load baby pictures into the app, but you can't save them out of the app. The only way to get your finished wight-baby pic is for the user to take a screenshot on their own. Terrible.
Hmm, played around a bit more with publishing the WightBabyMaker. The basic situation is that things are terrible. The main problem is that the app needs to load images from disk, and there isn't a good way to do that across multiple platforms. I tried out some windows 8.0 virtualization in order to try to build for that platform and publish to the Windows Store, but in 8.0 they went all the way and removed generic file access, so none of the previous file manager code works. I would need to replace the entire file manager, and have a different version of it for each platform. In retrospect, maybe this was not the best test project, since it has this huge cross-platform file access problem that is dwarfing any of the other work associated with the project. I also looked a bit into publishing for other platforms. Mac seems to be out, as I can't even use a virtual machine for that. Though this looks neat, if it works: IosBuildDev
I'm starting to understand why people like web dev so much. I might just make a branch where you can enter the baby image URL, and then save the resulting image. And then rather than testing the Win/Android/Mac store workflow, I could test out an advertising work flow. Maybe. Or just make it available through various versions on Google Drive.
WightBabyMaker in Unity
Added a small project, the
Wight BabyMaker. This was inspired by this Game of Thrones (spoiler!)
event. The Wight BabyMaker lets you take baby pictures, and quickly modify them so that they look wight-like. Theoretically you could even use it on non-baby pictures.
One of the motivations behind the project was to try out Unity and get a little experience in using it. Which I did. It wasn't a great experience. The basic tools seem kind of janky (multiple crashes and hard lockups, instances where making changes and recompiling was not actually changing the code being run). Also, the community is a sort of Libertarian paradise, where people want to charge for every little widget that they've written. If you do a google search for some common Unity task, the top 4-5 results will seem promising, but then lead back to the Unity Asset store. Of course there is no way to try out the widget without paying, so you then get to decide whether the 1-star reviews or the 5-star reviews are fake. There is some free code available in their version of StackOverflow, but A) their servers only work about 80% of the time and B) the results are of poor quality. I.e. not a lot of time put into the questions/answers, a lot of ESL, and the given code generally has issues and needs work and bugfixes before it is ready to go.
It is terrible the state of today's youth.