• What are you working on?
    95 replies, posted
Whoops, and it looks like VSO doesn't support sharing repositories at all yet. I'll move it to GitHub in a bit.
https://forum.facepunch.com/f/nerds/cwln/2/#postkmogv Just press ctrl-z after. Same with smilies: :)
Thanks. Is there a smiley list somewhere? I think you can multi-quote just by pressing that button on all the respective posts, but there doesn't seem to be a way to do that across pages yet.
Here's the scraper on GitHub now: https://github.com/Metapyziks/portal2-leaderboard-scraper
For the past two days my machine learning "system" has told me to purchase items that have prices either increase or remain constant! I am combining the results of the first featureset (yesterday price, 1wk price, 30d price, 30d avg, 30d min) and the second featureset (percent change). I got the idea from a report on github (Video Game Machine Learning) and programmed the entire project myself using scikit-learn I will keep testing for an entire week to see if this is just luck or if my system is doing something
Your post "draft" is saved between pages. It works I guess.
In the simulation code I'm working on at work, there are literally fucking thousands of comments like this: nvec3 x,b,c; // Get gravity accel b = GetGravityAccel(satellite_position); // Get Tension torque c = GetTensionTorque(); // Vector math x = b + c; // Vector math x += b; // Vector math c += b; The fucking "vector math" comments drive me up the goddamn wall. No fuckin shit that's whats going on. That is beyond obvious "I'm just beginning to code" style comments explaining what each member function including getters/setters does, it's just dumb and a waste of time for whoever wrote it. And a double waste of time for whoever tries to fix it when the spelling is inconsistent along with the spacing. On the front of work code, I found a fun bug that is just so great and makes me so happy (kill me, please). Forewarning: this is a long one, because it was a hell of an adventure to find, fix, and even run into in the first place. In the base class (satellite, which is a bad name imo) describing an object being simulated I disabled the simulation of aerodrag since I don't have time to handle that more gracefully. Presumably, no one would be daft enough to re-enable it manually down the road (LOL) and it's certainly not like me replacing a scattering of simulation flags like "DoAeroDrag" and "DoElectroDynamics" or "DoTension" with a struct like struct simulation_flags_t { bool AeroDrag; bool Electrodynamics; bool EndmassDynamics; bool SolarPressure; bool TemperatureDynamics; }; could leave any chance of derived classes re-enabling something, right? There'd have to be what was originally a shadow variable that was then manually-set which is near impo- haha jk in a class that inherits from satellite then inherits from "Body" to create a "Payload" the "DoAeroDrag" was redefined then set to be true in the derived classes core update method. So it was always getting re-enabled, every simulation step, no matter what I did. I hadn't seen this previously because the only "layers" of the hierarchy I interacted with were the most-derived - Payload - classes and the base class (satellite). This means that despite my tethered satellite orbiting the moon where there's very very little atmospheric drag to speak of, the payloads were trying to simulate this. It gets better though: the construction method for payloads forced them to think they were orbiting the Earth. This all came up because I made a change somewhere somehow that started letting the payload code route through a primitive aerodrag method, instead of the proper earth-based FORTRAN model. It checked for the radial distance of the satellite to be within the atmospheric zone of it's primary body. Previously this simulation only checked against the earth's radius, but my smart ass replaced it so that the check was properly against the currently orbited body's radius (previously, everything stored it's primary but didn't use that to get info or to check against). I just didn't pay attention to where I did this, and it was in that aerodrag stuff. The reason these things orbiting the Earth then was so bad is because it forced them to use the primitive not-correct model since the moon's radius (and thus the payload's radial distance) is heckin' small compared to the Earth. If it had proceeded down the code path for "reasonable orbital radii found", it would've thrown an exception telling me I'm trying to use an invalid aerodrag model (which I added because the FORTRAN code is broked, rip). But it didn't do this, and instead added an additional drag contribution that dragged my satellite out of orbit too fast. But when I fixed the "always orbit the earth" thing, I started getting exceptions thrown. Which told me that my aerodrag was enabled. And led to the preceding discoveries. Now, this all occurred for reasons I can't entirely identify: I was refactoring some code and trying to fix what I thought was a source of numerical error. Somewhere in the deep and arcane machinery of this codebase I caused my payloads to decide that they would simulate AeroDrag. After my attempt at fixing numerical error, my time of stable simulation went from ~6000 simulation-time seconds to 500 simulation-time seconds. Which wasn't ideal. So I dived into bugfixing and the above wall of text and anger is what I found. Sorry if it's confusing, but strangely the "backwards" order of the story from where I ended fixing bugs to how it all began is just how I typed it out and I can't be arsed to straighten it out or re-order it. If nothing else, dealing with this 20+ year old code has made me much more sympathetic towards the folks at Microsoft and CCP etc who have to just grumble "legacy code" when responding to users and fixing bugs
Is this the death of the WAYWO megathread now? What Are You Working On
No, keep using this thread.. but feel free to post in that forum too. I'm just experimenting at the moment, seeing if we can come up with a system that works.
I'm a bit concerned about the discussion not being very easily accessible. The reason I prefer WAYWO over dev blogs is that there's actual conversation going on.
100% agree. To work out it needs to be able to unfold in-line, maybe show the last few comments, and reply in-line. Also post in-line too. I ideally wanted to make the posts zoomed out, so you clicked on them and they zoomed in full size, but haven't figure that out yet.
I like the what you're doing with WAYWO so far, it seems pretty neat. I say keep it and improve it.
This forum feels like a mini game now. Very unique. I like it.
I think I'm losing
I feel like work is me putting out fires only to find 3 new ones. Today was a really big blaze that I somehow never saw deep in my code: when calculating the initial orbital elements of a tether, the routine does a check: Am I around the moon? If yes, use the Lunar orbit update method If no, use the generalized one One of the earlier problems I ran into was getting that check to actually properly work - but now I found a cheeky little shit of a bug hidden inside 2. void Satellite::CalcClassicalElementsWRTMoon() { // get position w.num_r.t. moon's tilted frame v_Xm[0] = dm_pv_R_m[0]; // more math follows, dependent on the value of dm_pv_R_m. } "dm_pv_R_m" is supposed to represent the position and velocity relative to the moon - which is already a bad sign, because it suggests that we'll just re-store our position and velocity in that object when our primary body is already the moon (and thus P+V are given relative to the moon anyways). I hadn't really run into this quantity before though, and it slipped under my radar because it was never caught in my big renaming sweep and that awful hungarian syntax just hides things. I only figured out what it did based on that first comment in the above method, and that method is also misspelled/mistyped. i could never figure out what the "num_r" in the middle meant, but I realized it was just a typo (prolly due to auto-complete) when typing W.R.T. Which made me feel dumb, because it's not that obsfuscated. The fun doesn't stop yet, though! Before the classical element update method is called, this method is called elsewhere: (note to self: i have to unfuck the order of this shit too) void Satellite::UpdateSecondaryBodyDistance() {   if (SecondaryBody) { dm_pv_R_m.xyz = this->X - SecondaryBody->X; dm_pv_R_m.uvw = this->V - SecondaryBody->V; } } It only checks if the secondary body pointer has been set: not a second's thought is given to what the secondary body is. This is really, REALLY bad design and kinda epitomizes a lot of the fight I'm putting up with in this codebase. Satellite is the base class damn near everything inherits from: so the secondary body pointer could be a Tether, TetherElement, Planet, Body, Payload, electrodynamic tether, mass exchange tether, etc. But we're assuming that it is ALWAYS the moon. Goddamnit. In the code I'm using, it's just the Earth but even that's still super bad. Since the method for calculating the classical elements expects to get data that makes sense relative to the moon, it gets completely garbage values. Correct values are vital as they set the rate at which the Tether rotates - it needs to keep the lower end always nearest the lunar surface, and the upper end as far away as possible. With the current setup, the Tether ends up horizontal to the moon. This greatly increases the gravitational force it experiences, pulling it out of orbit. In addition, the difference in gravitational force across the 25kms of rope/tether experienced by the top and bottom payloads is what's used to keep the Tether taut - otherwise it goes slack and spaghetti and the simulation drops it's spaghetti. So now it's fixed, and I ran a simulation that ended up being more stable than anything else I've ran. It actually made it the whole time period, out to 24k simulation seconds, which is the longest I've done successfully yet. All seemed great until I plotted the data and ran my primitive visualization though, which showed that things remain unchanged. Fuck. What the hell is going on? Stepping through the debugger damn near made me facepalm, because literally two fucking lines before I set the rotation rate is this gem: const double curr_mu = DefaultSolarSystem->GetPlanetMu(GetPrimaryOrbitedPlanet()); const Number num_a_e = std::abs(curr_mu * num_cm_Re / (2.0 * curr_mu - sqr(vel_magnitude) * num_cm_Re)); setOrbitPeriod(2.0 * d_PI * sqrt(num_a_e * num_a_e * num_a_e * (1.0 / curr_mu))); ffs. There's no conditional check to see if we need to update this, and there's no need to. It's not like the magnitude of the velocity can change between these few lines and the last time we updated the orbital period. So why is it here? I have no idea. I'm not sure what "num_a_e" is supposed to be. also fun trivia tidbit showing off more of the variable hell that is this program: num_cm_Re is designed to specify the distance from the Earth. Choices like that are widespread and I can only find and identify them one-by-one for the most part, as I eliminate successive/sequential miscalculations. So that's why I have another blogpost of a bugfix adventure. Kids, if anyone ever offers you legacy code - Just. Say. No.
How about having a "highlight" button next to your waywo posts, and when you press it, it gets turned into one of those fancy cards? That way content doesn't have to be submitted twice.
Leg animation and throwing https://files.facepunch.com/garry/2018/01/09/%202018-01-09%2022-53-30-129.mp4
I feel like I'm experiencing some kind of prolonged burnout. I used to enjoy trying out interesting new ideas for libraries and making stupid shit to make people laugh, but now the motivation to do that stuff is hardly there. But there's still so many things I want to make. It's frustrating. Also, CS classes are brutal.
I mean your last line probably answers why this is happening: personally, I find myself too drained after long and difficult work days to want to work on personal or fun stuff (given my work posts, this should be obvious ). The only real work I do on my rendering libraries is usually because I'm using one of them at work and managed to fix a few bugs. I wouldn't really stress it. Even my weekends feature less programming than they used to - in the end, try not to stress so much about what you don't do when you're busy and dealing with classes/work. If the inspiration strikes you, take it by all means, but don't burn yourself out more by forcing yourself to do extra projects on top of your already high workload. I still enjoy programming a lot too, so don't worry about this being a sign of you not liking it anymore. hard classes can suck the joy out of things, but I'll admit that even given my fuckhard work right now I still enjoy it a lot and find it satisfyingly challenging. It scratches the programming itch, even if it drains me of the ability to work on my personal projects as much - so this will probably also improve once you get out of school
Try meditating. It helped me a lot.
Hello hello how are we all, I'm getting ready for a career change where hopefully I'll become a junior developer somewhere, so I've been making little portfolio projects in Javascript including this Phaser-based game: My Little Starship 5. Also the forums changed and I'm very scared https://files.facepunch.com/forum/upload/133252/bfe904ed-9018-48bc-b239-f992c4062550/0.png https://files.facepunch.com/forum/upload/133252/6c5d9737-149d-441c-a707-5c3b6753cb92/1.png It's just a prototype at the moment, very light on content. I'm hoping having some nice little projects to show off will make up for my lack of a CS degree - and I'm hosting it on github along with my website so that all my changes fill up the little green boxes on my github profile and make me look good. That works, right? If anyone's got any advice for becoming a developer without a CS degree I'm all ears. A friend has been sending me lists of things to brush up on (data structures, sorting algorithms, that kind of thing) but I still feel like I'm not ready for job interviews quite yet...
Building your portfolio is probably the best thing. WRT to theory, just try to work on stuff that involves some of the things you think you should know, it's *way* better to learn that way than just studying it.
Hello again! It seems like it's been years since you've posted here.
I'm incapable of working on multiple things at once - I've been crowdfunding a novel so have basically done no programming for six months. MISSED YOU GUYS THO <3
I've chipped in on a couple of interviews for my company. A really good flashy portfolio of your best work will really put you on the list, but there are other factors to take into account as well. Here are some points I'd suggest to someone that is going to apply at our company Krillbite Studio First and foremost we value people we connect with. Someone we'd see at a game jam or a conference displaying people skills. Someone we'd like to grab a beer with and talk about game dev shit with a pen and a napkin scribbling down game ideas. Those kind of people. People who become our friends. Face value You should have your own email address and a good portfolio on your own domain. You should be a public game developer. You should post often on twitter/a blog and talk about your projects. It shows that you are personally interested in game development. This is what separates silent/shy graduates from actual developers. You should be the kind of person we'd see at a game developer conference to talk other game developers about game dev shit. We need you to be able to communicate and talk to people. To take charge and potentially lead a work force on a task. Being an introvert is a bad trait here. Go apply for software development if you like being alone. Bonus: You can tell us that you have published a game. Teamwork You should display an ability to work in a team. This is the tricky part because you need to show that you have the ability to work with people. Game jam projects, etc... The reason why kind of tricky because it is a huge part of the time you spend on a CS degree. You should know scrum. A work method of delegating tasks, estimating time and working towards goals. This is something you learn in CS (Norway). Git. Important. Be good at this. Bonus if you know this workflow: A successful Git branching model Coding Skills We use Unity so we'll give you a programming task to solve in Unity. Depending on the company the difficulty may vary. For us we needed a Junior Programmer to help out with stuff so the test wasn't extreme. You can see the test here : Camera You should display a clear and concise programming style. Internally we use our own but you should be able to show your own with a clear intent. Nice looking code is good code. Understanding the need to go slow in order to write good code. To take time planning and executing. See this part of this video and forward. Making hacks and dependencies all over the place is a bad thing. Bob martin can explain this better than I do. https://youtu.be/TMuno5RZNeE?t=956 Bonus: Understanding of the S.O.L.I.D principle in Unity. https://www.youtube.com/watch?v=eIf3-aDTOOA ------- You don't need a CS degree to join a game company, but it's a bonus. Most companies nowadays use either Unity or Unreal so pick one and focus on that one. If you're doing C# then go 100% for Unity games. Make small games. Publish them.
Ended up on a bit of a deadline at work, since I managed to get a talk accepted at CfgMgmtCamp in february, about orchestrating and managing Kubernetes clusters through Puppet. Worth noting is that my current manifests for the task are ugly, very restrictive, and only support CentOS 7 with Kubernetes 1.6.4 / 1.7.5 clusters (as they use RPM packaged versions of Kubernetes). Just today I managed to get my new and modern manifests up to the point where I was able to - in a fully automated and idempotent manner - deploy a Kubernetes 1.8.4 cluster, then downgrade it to 1.7.12, and then connect up multiple nodes to it. PuppetDB is a magical thing, allowing for basically running SQL queries against the computers in your network, with not only the ability to read facts like CPUs, memory, IP addresses, FQDN, etc, but also grabbing configuration from Puppet itself - so the only configuration parameter the K8s nodes need is simply kube_cluster, the rest can be gathered by reading configuration from the API server along with facts about the machine on which it runs. I hope to have this at a point where it's not only up on my github but also as a packaged module on the Puppet forge by the time I have to show it at CfgMgmtCamp.
Working on a little website for my VJ stuff. It's nothing fancy, I just want to have a place to send people to when they ask me who I am. https://files.facepunch.com/forum/upload/106992/59177447-aba3-4133-a2a3-cea3a097a5bd/Screenshot_2018-01-10_22-33-42.png The header thing is a webgl canvas and scrolls from left to right. https://drluke.space/pyree Please let me know if it works on your device.
Thinking about making something like this https://neurobot.trading but use the twitter feed for all the currencies as data. The simplest bot would be to assign word combinations like "buy $trx" as 1 and "sell $trx" as -1 as initial values. I think it'll be a good learning experience.
Works for me with Nightly on Linux using nouveau.
While cleaning up my main library project + making it more DLL compatible + adding features that should've been already implemented I breezed past 500 commits to this repo without even noticing - https://i.imgur.com/R9Fo1b5.png I'm mostly proud of how far this project has come though, from it's humble beginnings as a mess of code to the only-just-over era of being a "god library" that did too much (and didn't do much well). Up to about 18 months ago I'd never stuck with any one personal project, in even the slightest sense, for more than maybe a month or two tops. Limiting the scope and keeping my goals simple has honestly made it so much more enjoyable to work on and polish, and that's been a big help in keeping me going Now to figure out why it still thinks everything is HTML lol. Also, someone else here please get real deep into Vulkan so I'm not the only one feeling like a Vulkan mad hatter here
Sorry, you need to Log In to post a reply to this thread.