-
1 vote
-
What is the Fourth Dimension really? 4D Golf Devlog #2
5 votes -
Morality in games mechanics
4 votes -
Exclusive: Final Fantasy 16’s developers open up about Game of Thrones comparisons, sidequests, and representation
4 votes -
What makes a good detective game?
7 votes -
Standard patterns in choice-based games
11 votes -
Breath of the Wild fixed stamina, it's perfect now, we did it
5 votes -
AI won't take coders' jobs. Humans still rule for now.
4 votes -
The problem with mini-maps
9 votes -
Architecture in video games: Designing for impact
7 votes -
The theory and practice of cameras in side-scrollers
7 votes -
How Townscaper works: A story, four games in the making
8 votes -
How to combine video game genres
3 votes -
Bloodborne PSX: Recreating Bloodborne as a PlayStation One game
4 votes -
Platformer Toolkit
3 votes -
The Google engineer who thinks the company’s AI has come to life
17 votes -
Type-level API client
3 votes -
Allegations of sexism, bullying, and burnout: Inside the Microsoft studio behind State Of Decay 3
4 votes -
Trying to become a junior developer in Brazil is an uphill battle
They ask for years of experience, skills that no Jr would know since, well, it is a Jr and the process to apply for jobs are surreal. Thousands of tests, interviews that goes nowhere and lots of...
They ask for years of experience, skills that no Jr would know since, well, it is a Jr and the process to apply for jobs are surreal. Thousands of tests, interviews that goes nowhere and lots of ghosting. And the pay is not that good. No wonder after 2 or 3 years of experience a lot of develpers starts working for companies outside of Brazil.
Last one to contact me sent me a test to do it in 1 week. I went above and beyond and learned a lot of things. Before this, i had some small projects in Go and Python. Now i needed to learn Docker, tests, github actions, Postgresql and other things. Not everything was mandatory, but i did my best and did it all. I finished in 5 days since i have a day job.
Here is the result: https://github.com/crdpa/conservice
Showing the data in the browser was not necessary, but i think it was a nice touch and well made. If this does not land me a job as a junior developer i don't know what else could.
I'm glad i already have a job in another area, but me and my SO are separated by a 4 hour drive and i'm tired. I want to work from home to be near her and our dog. Paying rent in two places is becoming a burden.
I would be happy if you guys could test the application i made. It only needs docker.
And do you guys have any tips from now on?
7 votes -
Good web dev communities?
Hey folks. May someone recommend a good web dev community out there for quality discussions? Right now I'm using Vue for a project and I'm wrestling with architectural decisions. I'd love for a...
Hey folks.
May someone recommend a good web dev community out there for quality discussions?
Right now I'm using Vue for a project and I'm wrestling with architectural decisions. I'd love for a place where I can discuss different approaches' trade-offs and merits.
Many thanks. :)
11 votes -
Life of Reddit Enhancement Suite
23 votes -
Programming as home cooking
6 votes -
Did I complete my thirty day game making challenge?
6 votes -
Where/how should I acquire a .com domain for three years in advance?
So I wanna purchase a domain for my personal website (just a WordPress thing), and I wanna pay for three years in advance (I have my reasons). Which domain sellers are reasonably priced,...
So I wanna purchase a domain for my personal website (just a WordPress thing), and I wanna pay for three years in advance (I have my reasons). Which domain sellers are reasonably priced, trustworthy, and more likely to assist a less technical, non-developer user like myself?
Thanks!
13 votes -
Developer nukes his extensively used JS libraries to protest corporate use without compensation
17 votes -
Hyperbolica devlog #7 (probably final): Dialogue system
3 votes -
How accessible were this year's games?
6 votes -
The battle for Bungie's soul: Inside the studio's struggle for a better work culture
11 votes -
What’s something you’re trying to be better about?
Big or small, significant or insignificant, meaningful or mundane — what are you trying to be better about, and why?
11 votes -
What's next for GMTK?
14 votes -
The Legend of Bounce Back - My playable tribute to thirty-five years of Zelda
13 votes -
OpenMW 0.47.0 | Release announcement
12 votes -
The importance of button prompts
3 votes -
Why you didn't get lost in Metroid Dread
8 votes -
The anatomy of Portal - How Portal's puzzles trick you into being smart
5 votes -
Texture Archaeology, Cobblestone, and the most overused texture from the 90s
5 votes -
Apple will not reinstate Epic’s Fortnite developer account
11 votes -
The Ascent devs dish on the messy launch for 2021’s best sci-fi RPG
4 votes -
Hyperbolica devlog #6: Pushing Unity to its limits
5 votes -
Crash Bandicoot dev on optimizing for the PlayStation | War Stories
12 votes -
Activision Blizzard hires union-busting firm as workers start to come together
25 votes -
GDC Talks for Unreal Engine 2021
6 votes -
Demon's Souls: Remaking a PlayStation classic
3 votes -
Unity able to build and port to ChromeOS
5 votes -
A few easy linux commands, and a real-world example on how to use them in a pinch
This below is a summary of some real-world performance investigation I recently went through. The tools I used are installed on all linux systems, but I know some people don't know them and would...
This below is a summary of some real-world performance investigation I recently went through. The tools I used are installed on all linux systems, but I know some people don't know them and would straight up jump to heavyweight log analysis services and what not, or writing their own solution.
Let's say you have request log sampling in a bunch of log files that contain lines like these:
127.0.0.1 [2021-05-27 23:28:34.460] "GET /static/images/flags/2/54@3x.webp HTTP/2" 200 1806 TLSv1.3 HIT-CLUSTER SessionID:(null) Cache:max-age=31536000
127.0.0.1 [2021-05-27 23:51:22.019] "GET /pl/player/123456/changelog/ HTTP/1.1" 200 16524 TLSv1.2 MISS-CLUSTER SessionID:(null) Cache:You might recognize Fastly logs there (IP anonymized). Now, there's a lot you might care about in this log file, but in my case, I wanted to get a breakdown of hits vs misses by URL.
So, first step, let's concatenate all the log files with
cat *.log > all.txt, so we can work off a single file.Then, let's split the file in two: hits and misses. There are a few different values for them, the majority are covered by either
HIT-CLUSTERorMISS-CLUSTER. We can do this by just grepping for them like so:grep HIT-CLUSTER all.txt > hits.txt; grep MISS-CLUSTER all.txt > misses.txtHowever, we only care about url and whether it's a hit or a miss. So let's clean up those hits and misses with
cut. The way cut works, it takes a delimiter (-d) and cuts the input based on that; you then give it a range of "fields" (-f) that you want.In our case, if we cut based on spaces, we end up with for example:
127.0.0.1[2021-05-2723:28:34.460]"GET/static/images/flags/2/54@3x.webpHTTP/2"2001806TLSv1.3HIT-CLUSTERSessionID:(null)Cache:max-age=31536000.We care about the 5th value only. So let's do:
cut -d" " -f5to get that. We will alsosortthe result, because future operations will require us to work on a sorted list of values.cut -d" " -f5 hits.txt | sort > hits-sorted.txt; cut -d" " -f5 misses.txt | sort > misses-sorted.txtNow we can start doing some neat stuff.
wc(wordcount) is an awesome utility, it lets you count characters, words or lines very easily.wc -lcounts lines in an input, since we're operating with one value per line we can easily count our hits and misses already:$ wc -l hits-sorted.txt misses-sorted.txt 132523 hits-sorted.txt 220779 misses-sorted.txt 353302 total220779 / 132523 is a 1:1.66 ratio of hits to misses. That's not great…
Alright, now I'm also interested in how many unique URLs are hit versus missed.
uniqtool deduplicates immediate sequences, so the input has to be sorted in order to deduplicate our entire file. We already did that. We can now count our urls withuniq < hits-sorted.txt | wc -l; uniq < misses-sorted.txt | wc -l. We get49778and201178, respectively. It's to be expected that most of our cache misses would be in "rarer" urls; this gives us a 1:4 ratio of cached to uncached URL.Let's say we want to dig down further into which URLs are most often hitting the cache, specifically. We can add
-ctouniqin order to get a duplicate count in front of our URLs. To get the top ones at the top, we can then usesort, in reverse sort mode (-r), and it also needs to be numeric sort, not alphabetic (-n).headlets us get the top 10.$ uniq -c < hits-sorted.txt | sort -nr | head 815 /static/app/webfonts/fa-solid-900.woff2?d720146f1999 793 /static/app/images/1.png 786 /static/app/fonts/nunito-v9-latin-ext_latin-regular.woff2?d720146f1999 760 /static/CACHE/js/output.cee5c4089626.js 758 /static/images/crest/3/light/notfound.png 757 /static/CACHE/css/output.4f2b59394c83.css 756 /static/app/webfonts/fa-regular-400.woff2?d720146f1999 754 /static/app/css/images/loading.gif?d720146f1999 750 /static/app/css/images/prev.png?d720146f1999 745 /static/app/css/images/next.png?d720146f1999And same for misses:
$ uniq -c < misses-sorted.txt | sort -nr | head 56 / 14 /player/237678/ 13 /players/ 12 /teams/ 11 /players/top/ <snip>So far this tells us static files are most often hit, and for misses it also tells us… something, but we can't quite track it down yet (and we won't, not in this post). We're not adjusting for how often the page is hit as a whole, this is still just high-level analysis.
One last thing I want to show you! Let's take everything we learned and analyze those URLs by prefix instead. We can cut our URLs again by slash with
cut -d"/". If we want the first prefix, we can do-f1-2, or-f1-3for the first two prefixes. Let's look!cut -d'/' -f1-2 < hits-sorted.txt | uniq -c | sort -nr | head 100189 /static 5948 /es 3069 /player 2480 /fr 2476 /es-mx 2295 /pt-br 2094 /tr 1939 /it 1692 /ru 1626 /decut -d'/' -f1-2 < misses-sorted.txt | uniq -c | sort -nr | head 66132 /static 18578 /es 17448 /player 17064 /tr 11379 /fr 9624 /pt-br 8730 /es-mx 7993 /ru 7689 /zh-hant 7441 /itThis gives us hit-miss ratios by prefix. Neat, huh?
13 votes -
Level designer breaks down Ori's awesome sand level | On the Level
10 votes -
The power of video game HUDs
8 votes -
Return of the Obra Dinn: Development log by Lucas Pope
15 votes -
Microsoft enables Linux GUI apps on Windows 10 for developers
24 votes -
The SPACE of Developer Productivity
3 votes