Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
ZombieApostate
Mar 13, 2011
Sorry, I didn't read your post.

I'm too busy replying to what I wish you said

:allears:
More not interesting looking things!



UE4's save system seems pretty garbage for what I'm trying to do. As far as I can tell, it only writes to binary, so if you might change your save format, poo poo breaks. It also doesn't like pointers to complicated objects, like, say, Actors, so if it hits one, it'll just write out the name and call it a day. Probably fine for networking and baked in objects, not so great if you're spawning them on the fly.

So I wrote a thing to recursively iterate through all the UProperty's on a UObject (and children), check for the SaveGame flag they use for their save system and write it all to a JSON string instead. It will also write the name and class of any UObject pointers so I can re-spawn them on load, and I can add whatever else I might need later.

Now I just need to write a loader to match :smithicide:.

Adbot
ADBOT LOVES YOU

Keetron
Sep 26, 2008

Check out my enormous testicles in my TFLC log!

Not a screenshot, but some metrics from a project I inherited.
We had a suit of unit tests that took 1m30s to run, mostly because the units were actually tested in the integration tests that required Spring Boot to spin up at every new testclass. Also there were a ton of Thread.sleep(5000) in the @Before methods to allow for database initialization of elasticsearch.

The first I fixed by separating the code level unit tests from the integration tests and building separate runners in Intellij. Now slowly I am dissecting the integration test to only test integration and move business rules from the controller to their own class as to make them unit testable.
The second I fixed by simply looking at the elasticsearch docs and replacing the explicit wait with conditional waits, as there is a waitForRefresh call that will return 200 when the refresh is done.

The full run now is 30 seconds and the unit tests only less than 2 seconds. It made me happy, alright? One microservice down, only 6 more to go.

Luigi Thirty
Apr 30, 2006

Emergency confection port.

I started writing a DOS game and I think I accidentally wrote a windowing system instead.

https://twitter.com/LuigiThirty/status/1027103445080268800

Good Sphere
Jun 16, 2018

Luigi Thirty posted:

I started writing a DOS game and I think I accidentally wrote a windowing system instead.

https://twitter.com/LuigiThirty/status/1027103445080268800

Well cool, maybe you can incorporate that into your game! Then port it to Steam, but have a copy of the original DOS version people can order on a floppy disk! Too soon?

Happy Thread
Jul 10, 2005

by Fluffdaddy
Plaster Town Cop

Luigi Thirty posted:

I started writing a DOS game and I think I accidentally wrote a windowing system instead

Haha, story of my life too. Should be the thread title.

Good Sphere
Jun 16, 2018

Realtime wacky photo effects and on imported images, which let you export to gif if you want too. Swift on iOS




e: sorry these were annoying large

Good Sphere fucked around with this message at 19:16 on Aug 15, 2018

Star War Sex Parrot
Oct 2, 2003

Star War Sex Parrot posted:

In a similar "not that interesting of a screenshot" but I think it's cool: Google Benchmark numbers from my laptop of inserting 100 million tuples 10x...
code:
BM_SimpleInsert/repeats:10/real_time_mean              934.931MB/s   18.6986M items/s
Hell yeah the storage engine I'm working on for our new RDBMS can sustain inserting 18 million tuples per second single-threaded. We started the day at ~1M/sec and after spending a bunch of time fixing memory alignment issues and reducing other unnecessary operations, now it's flying.

Tomorrow comes concurrency control though, which will take a nice bite out of performance.
As expected, slapping a Snapshot Isolation concurrency control layer on top of it dropped us down to ~300,000 txns/second for an OLTP-like workload with 8 concurrent worker threads but that's pretty reasonable for my laptop. There's also plenty of room to optimize that. I still need to investigate how cooked that number is due to aborts since we're immediately aborting on conflict rather than waiting, but I'm happy so far.

Next up: garbage collection.

Star War Sex Parrot fucked around with this message at 23:18 on Aug 13, 2018

TheresaJayne
Jul 1, 2011

Frozen Peach posted:

I've been learning about state machines and message queues at work lately.

My project has been building a new Engineering Change Order process that's primarily web based. The fun part is that it needed to connect to the Solidworks EPDM system, which can only be done in .Net on a Windows computer actually running EPDM, but all of our primary development is done in PHP on Linux servers.

have you tried using mono?

Star War Sex Parrot
Oct 2, 2003

Star War Sex Parrot posted:

Next up: garbage collection.


Garbage collection: it works.

I’ll leave my laptop running UINT32_MAX transactions overnight just for kicks.

Star War Sex Parrot fucked around with this message at 23:36 on Aug 23, 2018

Mr Shiny Pants
Nov 12, 2012

Star War Sex Parrot posted:



Garbage collection: it works.

I’ll leave my laptop running UINT32_MAX transactions overnight just for kicks.

So, what are you building? A custom DBMS?

Star War Sex Parrot
Oct 2, 2003

Mr Shiny Pants posted:

So, what are you building? A custom DBMS?
Yep, so far the backend is coming together nicely. There’s a PAX-inspired in-memory column store, Hyper-inspired multiversion concurrency control (albeit stripped down to Snapshot Isolation for simplicity right now), and a basic garbage collector to prune old versions. The next thing is logging for durability and then the storage engine is ready to be buttoned up and have a SQL execution engine bolted on top.

Star War Sex Parrot fucked around with this message at 13:07 on Aug 24, 2018

Mr Shiny Pants
Nov 12, 2012

Star War Sex Parrot posted:

Yep, so far the backend is coming together nicely. There’s a PAX-inspired in-memory column store, Hyper-inspired multiversion concurrency control (albeit stripped down to Snapshot Isolation for simplicity right now), and a basic garbage collector to prune old versions. The next thing is logging for durability and then the storage engine is ready to be buttoned up and have a SQL execution engine bolted on top.

Not to be combative, there was nothing already out there? Seems like quite a bit of work, not that doing work is wrong mind you.

Special use case?

Star War Sex Parrot
Oct 2, 2003

Mr Shiny Pants posted:

Not to be combative, there was nothing already out there?
Nope. All of the state-of-the-art systems (Hekaton, Hyper, HANA, MemSQL) are closed source. We’re basically just reimplementing variants of the systems described in their papers (MVCC and LLVM JIT from Hyper, Bw-tree from Hekaton, etc.). I think the only lifted code will be Postgres’ parser.

Mr Shiny Pants posted:

Seems like quite a bit of work, not that doing work is wrong mind you.
It absolutely is, but that's systems research for you.

Star War Sex Parrot fucked around with this message at 18:06 on Aug 24, 2018

Mr Shiny Pants
Nov 12, 2012

Star War Sex Parrot posted:

Nope. All of the state-of-the-art systems (Hekaton, Hyper, HANA, MemSQL) are closed source. We’re basically just reimplementing variants of the systems described in their papers (MVCC and LLVM JIT from Hyper, Bw-tree from Hekaton, etc.). I think the only lifted code will be Postgres’ parser.

It absolutely is, but that's systems research for you.

That sounds very, very cool. Which language are you using?

Edit: What is the business case for something like this if you don't mind me asking? SAP too expensive? Or they don't provide it in the manner you want?

Mr Shiny Pants fucked around with this message at 19:02 on Aug 24, 2018

Hatsune Mike
Oct 9, 2013

Spent some time learning how to use this logic analyzer to track down a crash I'm seeing in hardware, but not in emulation, for a hack project I'm working on. This has been driving me nuts and without a repro case on anything but actual hardware it's been really hard to debug. I finally get it going and the addresses seem sane, and then it just hangs on a write to $5FFF88. It hasn't run into the weeds and the poo poo, but it's just sitting there. Arguably a hardlock, not a crash.



From what I can tell a write address is underflowing into an unhandled region of memory. On one variant of this hardware and in the emulator this is a don't-care condition and everyone's happy, but on this particular board /DTACK is never asserted so the program hangs. Going to test out a patch that jumps to a small range check and makes these writes conditional.

In theory I could short /DTACK to ground and get the program to jump past this bit. I couldn't test my fix this morning because I was out of blank EPROMs to burn; we'll see after work.

Star War Sex Parrot
Oct 2, 2003

Mr Shiny Pants posted:

That sounds very, very cool. Which language are you using?
C++17. I can share the repo in a week or so once our design docs are a bit more fleshed out. Unless you've read a few database design papers the codebase might be a bit unapproachable right now.

Mr Shiny Pants posted:

Edit: What is the business case for something like this if you don't mind me asking? SAP too expensive? Or they don't provide it in the manner you want?
My business case is being a CS grad student and needing a research platform! :haw:

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Star War Sex Parrot posted:

Nope. All of the state-of-the-art systems (Hekaton, Hyper, HANA, MemSQL) are closed source. We’re basically just reimplementing variants of the systems described in their papers (MVCC and LLVM JIT from Hyper, Bw-tree from Hekaton, etc.). I think the only lifted code will be Postgres’ parser.

Just curious, you intend to opensource yours?

Star War Sex Parrot
Oct 2, 2003

Krankenstyle posted:

Just curious, you intend to opensource yours?
It's open source now but I believe it's a bit inscrutable to non-database folks until we shore up our docs in the next week or so. I need to make some slides or something that distill down what we implemented from the Hyper and PAX papers.

Star War Sex Parrot posted:

I can share the repo in a week or so once our design docs are a bit more fleshed out. Unless you've read a few database design papers the codebase might be a bit unapproachable right now.
The LLVM engine and Bw-tree are already open sourced in our previous DBMS.

Star War Sex Parrot fucked around with this message at 21:15 on Aug 24, 2018

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Awesome! :)

Luigi Thirty
Apr 30, 2006

Emergency confection port.

Spraynard posted:

Spent some time learning how to use this logic analyzer to track down a crash I'm seeing in hardware, but not in emulation, for a hack project I'm working on. This has been driving me nuts and without a repro case on anything but actual hardware it's been really hard to debug. I finally get it going and the addresses seem sane, and then it just hangs on a write to $5FFF88. It hasn't run into the weeds and the poo poo, but it's just sitting there. Arguably a hardlock, not a crash.



From what I can tell a write address is underflowing into an unhandled region of memory. On one variant of this hardware and in the emulator this is a don't-care condition and everyone's happy, but on this particular board /DTACK is never asserted so the program hangs. Going to test out a patch that jumps to a small range check and makes these writes conditional.

In theory I could short /DTACK to ground and get the program to jump past this bit. I couldn't test my fix this morning because I was out of blank EPROMs to burn; we'll see after work.

What kind of board is that? I don’t recognize it

Ranzear
Jul 25, 2013

Looks like an arcade machine board, which goes with the 'emulation' part, but アスパイア just gives me Acer laptops.

Hatsune Mike
Oct 9, 2013

The board is Gaia Crusaders and I'm porting something from other similar hardware to it.

My fix worked; I put in a patch to check for underflow and not write to VRAM at $5XXXXX, and now it's not locking up any more. ROMs burnt, case closed.

There is still one more hardware issue and it's that the blanking signal for the video output is off by one pixel so the left side of the screen gets one extra column of data (consisting of off-screen tilemap data and no sprites) while the right side is cut off by one column. This might be fixable with just a D flip flop so long as I can find the dot clock signal.

Ranzear
Jul 25, 2013

I should have you look at our glitchy Pyros. It doesn't like to cold boot but maybe that's just chip creep.

On the other hand, I was always convinced the sound is hosed up, but I guess the voices are supposed to sound like this?
https://www.youtube.com/watch?v=cEClHhd9ieU&t=46s

Hatsune Mike
Oct 9, 2013

If it works after a forced reset, check electrolytic caps used in the reset circuit as well as main filter caps for the main 5V rail

Luigi Thirty
Apr 30, 2006

Emergency confection port.

I got flat shading and camera movement working together in my Glide 3D engine. Now stuff is properly lit wherever it is in the scene. (I think, but it’s close enough.)

https://twitter.com/LuigiThirty/status/1036455871587471361

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

Worked a little bit more on my Hypderdock-like window preview thingy for Mac

Ranzear
Jul 25, 2013

Spraynard posted:

If it works after a forced reset, check electrolytic caps used in the reset circuit as well as main filter caps for the main 5V rail

I'm pretty sure it got a big blue kit done, but I'd have to check. I don't remember the specifics, but I think it's just a video scramble and you can start the game and hear sounds, but maybe we never touched it. It'll end up with my brother eventually.

Meanwhile my Gravitar is hard enough to move around and have space for, and the red channel is off by one whole pixel. Drives me nuts.

Ranzear fucked around with this message at 01:19 on Sep 6, 2018

Hatsune Mike
Oct 9, 2013

Ranzear posted:

I'm pretty sure it got a big blue kit done, but I'd have to check. I don't remember the specifics, but I think it's just a video scramble and you can start the game and hear sounds, but maybe we never touched it. It'll end up with my brother eventually.

Meanwhile my Gravitar is hard enough to move around and have space for, and the red channel is off by one whole pixel. Drives me nuts.

Time to separate the middle convergence rings to align red/blue into magenta, then do the same with the furthest set to bring green/magenta together.

For the pairs twisting in opposite directions brings colors closer or together while moving together affects positional offset.

CRT convergence in minutes!

Ranzear
Jul 25, 2013

It's a color vector by the way. I have two complete manual sets and the full procedure is insane. Something like four pages of a 20 page manual.

Awesome to know that it's all driven by analog signals right off the board though. I might actually be able to cheat it over with board adjustment
but I have to drill the lock again because now it's jammed after I drilled it the first time after losing the key.

I also just don't really want to poke around CRT voltages like ... ever. Also this cabinet weighs 450 pounds, no joke.

Ranzear fucked around with this message at 03:19 on Sep 10, 2018

Harik
Sep 9, 2001

From the hard streets of Moscow
First dog to touch the stars


Plaster Town Cop
Crosspost from programming questions.

My Dad has 8mm films of things like his wedding, a trip to the bahamas, europe, Toronto + Niagra falls, etc. This stuff is all at least 40-50 years old. A few years back, he began working on digitizing it with a projector and camera setup.
https://i.imgur.com/gIEXbby.webm

The problem is obvious: there's no tracking so it just becomes a film of a film whizzing by.

I used opencv to track the sprockets and crop the resulting image to frame: https://i.imgur.com/UfkUhTk.webm

grayscale->threshold->findContours->get bounding rectangle->verify it's the right size in the right place->crop original image->save
I add a tiny border around it to stop the feature I'm looking at from touching the edge, as that creates a contour around the entire image frame.
I even handle joining two contours because there's a hair across the sprocket hole which turns it into two contours.

Project is here: https://github.com/harikattar/8mm/blob/master/8mm.py
E: It's not perfect but it's my first foray into opencv and I only spent a few hours on it so far.

It's not 100% yet, the beginnings of all the films are burned (as amateur 8mm is wont to do) as the sprocket holes let light through the guard band at the beginning and it bled out. That throws off the CV shape matching because it's a big amorphous blob. There's clearly enough data there to identify the sprocket so I'll work on better thresholding and identification.

If anyone's done opencv work and has ideas for better identifying shapes I'd love to hear it. I'm just using the bounding rectangle instead of a complicated rectangle with rounded corners match.

toiletbrush
May 17, 2010
That's cool as heck.

I've never used openCV so dunno if it's easy, but it has a bunch of stuff for feature detection and registration/motion estimation, perhaps you could use that with the actual content of the film, frame by frame, to estimate or fine tune where the image should be cropped when you can't find a decent match for the sprocket holes?

Harik
Sep 9, 2001

From the hard streets of Moscow
First dog to touch the stars


Plaster Town Cop

toiletbrush posted:

That's cool as heck.

I've never used openCV so dunno if it's easy, but it has a bunch of stuff for feature detection and registration/motion estimation, perhaps you could use that with the actual content of the film, frame by frame, to estimate or fine tune where the image should be cropped when you can't find a decent match for the sprocket holes?
A lot of that motion compensation ends up looking like jello, so I'm not a huge fan of it. Those holes are massive fields of white, I should be able to nail them.

Second reason is most frames I get two shots at as they go by, so I can usually get one of them. What I will do that for is making an accurate frame counter - do motion estimation of those sprocket holes so I know for sure if I've dropped a real frame or not. Right now I may drop one frame and get the next one twice because it just treats each input image individually.

It turns out that fitting a shape inside a shape is actually a non-trivial problem in computer vision.

As a human I can see where it "should" go, but actually fitting it means finding rectangles that fit and adjusting the center. Lots of easy ways to say "Given these two centers, is there overlap?" but not easy to say "tell me the center where shape B fits in shape A" Especially when you say "allow minimal edge incursions because it may be noisy"

duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


I decided to do that emulator101 thing
in typescript

Up next is adding I/O emulation and working on the speed (by getting rid of the logging to the dom)
Edit: Finally uploaded. Not user friendly yet.

duz fucked around with this message at 02:42 on Sep 23, 2018

Luigi Thirty
Apr 30, 2006

Emergency confection port.

I bought a TinyFPGA last month and decided the best way to learn Verilog would be to design an 8-bit computer.



16MHz processor with a 6502-style architecture (though compatibility isn't a goal), 1KB of RAM, 4KB of ROM, 9600bps UART. 40x25 text mode display with a simple ASCII plus symbols character set. All hooked up on a breadboard with composite video out (tested on an old PVM, this picture's on an LCD monitor). I wrote a little assembler in Python for programming it. Now it's time to write some software for it!

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



holy hell :worship:

pls make a program that flashes colors and writes penus

Hughmoris
Apr 21, 2007
Let's go to the abyss!

Krankenstyle posted:

holy hell :worship:

pls make a program that flashes colors and writes penus

Gob's Program: Y/N?

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



luigi, check it (c64 "dialect" lol):

code:
		processor 6502
		org $1000

BORDCOLOR = $D020
BACKCOLOR = $D021

main:	INC BORDCOLOR
		INC BACKCOLOR
		
		JMP main
maybe you can port it to your machine while printing penus or vagus :shrug: it might look cool

Luigi Thirty
Apr 30, 2006

Emergency confection port.

There’s no color yet. Just 1BPP. It’s more of a PET than a C64.

mst4k
Apr 18, 2003

budlitemolaram



I know it's just postman but getting identity server 4 to issue me clientcredential tokens and doing this whole set up with a cert/linux/migrations/identity 3/implicit auth was a lot of work and learning, lol.

Using VueJS/Vuetify for the front end. :)

e: uhh hide my token lol

mst4k fucked around with this message at 19:42 on Dec 30, 2018

Adbot
ADBOT LOVES YOU

Good Sphere
Jun 16, 2018

New filter I’ve been working on (iPhone) I feel quite good about, except it’s not yet optimized for video capture because it will kill your battery. We’re looking at 59% CPU for video capture vs 19% for previewing the effect live when taking a photo.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply