Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "synchronization"
-
ALWAYS read warnings guys.
Story time !
A client of ours has a synchronization app (we wrote it) between his inhouse DB and our app. (No, no APIs on their end. It’s a schelduled task).
Because we didn’t want to ask them for logs every single time, the app writes logs to disk (normal) and in Applications Insights in Azure.
When needed, I can go in portal, get all logs for last execution in a nice CSV file.
Well, recently we added more logs (Some problems were impossible to track).
So client calls us : “problem with XXX”
Me : Goes to Azure, does the same manipulation as always. Dismiss a smaaaaaalish warning without reading. Study logs. Conclusion: “The XXX is not even in the logs, check your DB”.
Little I knew, the warning was telling me “Results are truncated at 10.000 lines”.
So client was right, I was wrong and I needed to develop a small app to get logs with more than 10.000 lines. (It’s per execution. Every 3 hours) -
Most successful? Well, this one kinda is...
So I just started working at the company and my manager has a project for me. There are almost no requirements except:
- I want a wireless device that I can put in a box
- I want to be able to know where that device is with enough accuracy to be able to determine in which box the device was put in if multiple boxes were standing together
So, I had to make a real time localization system. RTLS.
A solo project.
Ok, first a lot of experiments. What will the localization technique be? Which radio are we going to use?
How will the communication be structured?
After about two months I had tested a lot, but hadn't found THE solution. So I convinced my manager to try out UWB radio with Time Difference Of Arrival as localization technique. This couldn't be thrown together quickly because it needed more setup.
Two months later I had a working proof of concept. It had a lot of problems because we needed to distribute a clock signal because the radio listeners needed to be sub-nanosecond synchronous to achieve the accuracy my manager wanted. That clock signal wasn't great we later found out.
The results were good enough to continue to work on a prototype.
This time all wired communication would be over ethernet and we'd use PTP to synchronize the time.
Lockdown started.
There was a lot of trouble with getting the radio chip to work on the prototype, ethernet was tricky and the PTP turned out to be not accurate enough. A lot of dev work went into getting everything right.
A year and 5 hardware revisions later I had something that worked pretty well!
All time synchronization was done hybridly on the anchors and server where the best path to the time master was dynamically found.
Everything was synchronized to the subnanosecond. In my bedroom where I had my test setup I achieved an accuracy of about 30cm in 3d. This was awesome!
It was time to order the actual prototype and start testing it for real in one of the factory halls.
The order was made for 40 anchors and an appointment was made for the installation in the hall.
Suddenly my manager is fired.
Oh...
Ehh... That sucks. Well, let's just continue.
The hardware arrives and I prepare everything. Everything is ready and I'm pretty nervous. I've put all my expertise in this project. This is gonna make my career at this company.
Two weeks before the installation was to take place, not even a month after my manager was fired, I hear that my project was shelved.
...
...
Fuck
"We're not prioritizing this project right now" they said.
...
It would've been so great! And they took it away.
Including my salary and hardware dev cost, this project so far has cost them over €120k and they just shelved it.
I was put on other projects and they did try to find me something that suited me.
But I felt so betrayed and the projects we're not to my liking, so after another 2-3 months I quit and went to my current job.
It would've so nice and they ruined it.
Everything was made with Rust. Tags, anchors, RTLS server, web server & web frontend.
So yeah, sorry for the rambling.5 -
Watching all the StarWars for the first time (to fill in the gaps in my cultural knowledge).
I think Yoda may have had some syncronization issues -- some race conditions in his speech I noticed have.5 -
Well,
Till now, my experience with Mac OS and iOS has been fucking shit... and that is, if said elegantly...
As of now, I have formatted my phone AND laptop about 8-9 times i believe ( got phone a week ago, laptop a couple weeks ago )...
iCloud won't even work properly for me, image synchronization is pretty much fucked up in every damn way and is unresponsive for 99%. The remaining 1% when it works is the time when i actually reformat the system.
And don't even get me started on "Continuity"... it is continuously, robustly, non working at all times. Hell, the phone can't even connect to the laptop over bluetooth, so Continuity is a far off thing.
VERY disappointed at Apple.
OR, it hates me particularly because everything works perfectly fine for a friend of mine. ( He hasn't even formatted his devices once since like 2 years... ).
I love technology, but apparently, it HATES me to death </3
Oh and fuck u Apple for giving me such a pitiful software suite...
BTW, undergoing another format on phone. On laptop right now to write this rant. Laptop is gonna be formatted again in like 6-7 hours from now...
😞😞😞😞3 -
*Debugs a thread synchronization issue in a C program*
*Gives up after few attempts to debug a bootstrap table that’s not showing a column* -
A remarkably stupid but efficient technique I invented today to measure the latency of an audio feedback channel involving multiple hardware elements that is difficult to synchronize by itself:
1. Knock. Observe the echo in the feedback.
2.Try to knock in such a way that the physical sound more-or-less lines up with the feedback. The human brain is really good at this on average.
3. Once you often only hear one knock (as perfect synchronization as your ear can tell), record several minutes of audio
4. Stop knocking, count the additional knocks in the echo
5. Multiply the average delay between knocks on the recording by the number of additional knocks from step 44 -
I seriously love rsync. Whoever made that utility is my hero. Not only that its CLI client is amazing and full of features, but rsync in daemon mode makes secure file synchronization a breeze! <38
-
So...
I had to do a minor project for this semester. It was to be made in a group of two people and everything ( work ) was shared between the both of them.
I had a friend who was my partner ( faculties decided who will be in each group ). She doesn’t like programming nor does she come to college but I hoped she would do fine and be helpful ( she is a decent person actually ).
She never bothered to come to college, or even ask how the project was going... except one day before presentation 😒😑.
Thankfully, my guide removed her as my partner... she was detained because of extremely low attendance... and I had to work alone... that was much better though 😁.
Minor project was kinda fun by the way... and since I did it alone, I was able to do it at my own pace and without any issue of synchronization between partners ☺️☺️4 -
/** Null until this web socket is connected. Used for writes, pings, and close timeouts. */
private ScheduledExecutorService executor;
Dear boys and girls.
If you ever do this again and release this as a public library (even better - an official client of your solution, e.g. kuber-fucking-netes), I will get my way into dR's gateway servers, trace down your IP in nginx's logs, find your location, probably use some means to get your first and last name (you prolly have a domain registered under your IP anyways...), buy a ticket to your town, get to your home and wait for night to fall. Once it's dark and you're asleep, I'll make sure to leave a real nice, warm and extraordinarily smelly turd on your doorstep (I'll also make sure the process of manufacturing that gem is as noisy as it gets - you just have to bend the right way, and....).
Gents. If you really, REALLY want to make writes asynchronous, at least provide a way to either get a notification once the write is synchronized, or allow the user to handle the threads/executors himself!
https://youtube.com/watch/...5 -
I've decided to switch my engine from OpenGL to Vulkan and my god damn brain hurts
Loader -> Instance -> Physical Devices -> Logical Device (Layers | Features | Extensions) | Queue Family (Count | Flags) -> Queues | Command Pools -> Command Buffers
Of course each queue family only supports some commands (graphics, compute, transfer, etc.) and everything is asynchronous so it needs explicit synchronization (both on the cpu and with gpu semaphores) too4 -
Cause there's no really safe solution for that right now, finally release my favorite and verifiable secure linux password management tool for the web and as apps for iOS, Android and Windows Phone - including online synchronization, so you can access your passwords anywhere. (Web and Android first, the other platforms later).
At the moment it is still a pure gpg based Linux terminal application.2 -
Holy shit.
This was an effort to combine Gitlab, Github and Bitbucket with VSCode and git SSH authentication. SSH agent doesn't work, configured, added some code in .bashrc, seems fine. Then there was still ssh-askpass missing.
"ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory"
WTF VSCode? Why do I need this crap?
However, installed it. Nevertheless, I'm still asked for my password every time when I synchronize using the GUI. Thank God everything was in docker containers/images. So at least there is no garbage left after every failed attempt.
I don't know how, but I finally made it that at least synchronization using the terminal works without a password.
Took me five hours to do this shit.
Now I just report the bug to Microsoft and then straight to McDonalds. I'm starving.1 -
I'm in a big fat fucking stinking rut, as in progress on this project has absolutely stagnanted.
Gonna rubber face your duck now **UNZIPS** excepts I don't have zippers, as joggers are the one true way; fake Adidas til I fucking drop.
Brain damage aside, I understand both how I've layed out the data and what I'm supposed to do with it. We have a virtual machine, an array of instructions and arguments for a given process within it, and we need to walk this array and map values to registers.
We also need to spill values inside registers to stack, IF they are required at a further point within that block. This also isn't terribly complex. We simply look forward in the array and see if the value is an argument to any instruction that *needs* this value to be loaded (ie, within a register).
So this implies multiple iterations; we need to better understand how one particular value is used throughout an F before we can make a final decision on how many registers and stack space are actually needed for the whole block.
Here's where it gets tricky. If there's a call, we need to be certain that the symbol being invoked has already been fully processed. Besides the obvious fact that recursion fucks me up, there's another matter: say a private method gets invoked by another private method. We can take advantage of this, by which I mean, sacrilege incoming so put on this toga.
Looking at the output for C compilers, it would seem this is not done in practice, I would assume because it's a pain in the ass. But when you have the guarantee that F will only be called internally, as that's what "private" means, there's two ways it can go:
0. It's well below the 13-20 cycle threshold, so you inline the fucker. No suprises there.
1. It's a more involved affaire, and invoked in more than one place, so you don't inline it. Codesize matters.
Recursion and [1] are the big deal things holding me back. Not because it's too hard, like I said this is kindergarten level abstraction. I'm just slow and fanatical, which is how I prefer to spell "constant obsessive paranoid delusions". I can see the potential optimization I can pull here, so I'm stuck trying to figure it out.
Idea would be, handling the register allocation and stack spill for an internal-internal (or deep internal; what we like to call a "guts" method) in synchronization with the *calling* processes. This is, fundamentally, violating all conventions -- but so under the hood no one will notice.
Let me give you an example. If we were to pass some value to a function, expecting to mutate it and get a different value back, in a lot of cases it'd be stupid to make an implicit copy by using two registers, one for input and another for the output. Dude, it's one cycle. Multiply it by a million, say sixty times per second, for every time you __needlessly__ make a copy of a value that we've already stated is mutable.
Clearly unacceptable. This is, in the strictest sense, everywhere in every single codebase. Premature micro optimization is the root of all goodness, God is great and praiseworthy. So how do we go about it?
Answer is I know and I don't know. By which I mean to say, this very thing I've done by hand. Assembly is fun. Now the issue is teaching a calculator how to do it. Not so fun.
There is a dependency chain between processes, as I believe I've kind of alluded to. I'm trying to make decisions on the side of the caller depending on the details of the callee, which is why recursion is rawdogging my soul. This is the same situation, it's inverting the direction of one or more links in the dependency chain, which makes no fucking sense.
And yet it does.
Brain, explain yourself.
How do *you* handle this without crashing?
Brain?
<<ME STEWPED; BEEP-BOOP>>
Alright then, that was a useless attempt at fuckery. Let's have a nap then, maybe it'll come to me in the morning. That's what I've been saying to myself for almost a month now.
Perhaps it is a hardcoded fuk.1 -
Does anyone know a good todo app? I' searching someting _simple_, so no kanban board whatsoever.
I only want a way to do simple lists.
I'm looking for a mobile app, if it has cloud synchronization or even a desktop app, that's an absolute bonus. Also, while we're on that topic, self hosted would be reeeeaaaally cool (but again no must)6 -
Last week I spent a couple of days researching how to sync a CalDAV server with any Android calendar.
I downloaded several apps, and tried to connect in many ways (without HTTPS, calendar link, user link, any combination of them, with and without www, etc.)
Today I chose an option I had been trying to avoid: downloading an app that was recommended in some places but that's no longer on Google Play Store.
Got the APK from some website that didn't look too suspicious...
website.com, username, password; and it WORKED. (This also confirmed my server was well configured)
IN A MATTER OF SECONDS. Within the next minutes I could test sending events to and fro.
WHY?
WHAT- WHY IS THERE NO ALTERNATIVE FOR SOMETHING SO TRIVIAL. This future is so dumb.
One would have thought that there was something better than a dead-simple app made for Android 4.4
I really can't believe it.4 -
One year anniversary at my company and I find I personally have 4 separate exchange accounts to varying levels of synchronization. Perforce, email, lync Skype and a few others have varying spellings of "Welcome1" as the password.
Every password expiration and reset gradually adds to the slow motion landslide.
IT can't figure out how my accounts are even working in the first place and wont touch it.
Halp.1 -
Is there a Git client for Android that WORKS (without rooting)?
I've seen quite a few but would love your recommendations. Looking to just pull, push, commit.
Would probably connect to Github, maybe Bitbucket or Gitlab3 -
Vivaldi browser is shit.
Simple isntructions on how to make most shitty browser ever:
1. Force users to use "really-fucking-long" password that will not match to any of their existing ones.
2. Invent some useless stupid "encryption password" (why does any normal browser work fine without that shit) and most ridiculous - automatically set it to be the same as the main password.
3. Of course you forget the pass you set because you dont remember what symbol you added 5 times in the end of your normal pass to fit their stupid rules.
4. You have to reset it
5. "Encryption password" does not reset with it, so you still dont remember it
6. Sync is not working!
7. If you think this is shitty enought, you are not right - they went futher. To reset that fucking "encryption password" you have to... ERASE ALL YOUR CLOUD DATA.
Fucking retarded piece of shit - never, never trust those morons who made this shit browser to sync any of your sensitive information.17 -
So I've been helping with recruitment at work for a lead developer. Our first stage is pretty standard for all levels and it essentially a technical interview because CVs are useless really. We're a C# house so we have questions on framework internals such as how the dictionary class is implemented, locking and thread synchronization techniques. Then some pen and paper coding excercises, like reverse array.
I'm not a big fan of these and I think they are too constrained to detail implementations and not about concepts.
So I ask what stuff do you do at your company to get an idea of some ones competency?1 -
!rant
can you give me/point me to some good example problem/exercise for multithreading? as in, something that's small in scope, but actually requires dealing with most of the multithreading issues & complications? race conditions, synchronization, locks, shared memory access, cross-thread calls/callbacks, etc?2