Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "concurrency"
A guy on another team who is regarded by non-programmers as a genius wrote a python script that goes out to thousands of our appliances, collects information, compiles it, and presents it in a kinda sorta readable, but completely non-transferable format. It takes about 25 minutes to run, and he runs it himself every morning. He comes in early to run it before his team's standup.
I wanted to use that data for apps I wrote, but his impossible format made that impractical, so I took apart his code, rewrote it in perl, replaced all the outrageous hard-coded root passwords with public keys, and added concurrency features. My script dumps the data into a memory-resident backend, and my filterable, sortable, taggable web "frontend"(very generous nomenclature) presents the data in html, csv, and json. Compared to the genius's 25 minute script that he runs himself in the morning, mine runs in about 45 seconds, and runs automatically in cron every two hours.
Advice that I give to interns/grads:
In uni/college, you're taught *how* to code something to achieve a goal, and 99% of the time the code will work and do the job in a lab.
But when building things for a real production environment, you learn the 100 ways how *not* to code, from seeing things break left right and centre - basically everything and anything can break your code, whether it is users, the OS, other people's code, legacy code, lag, concurrency, the alignment of the moon to your server...5
My dream is to build a shopping cart for web stores that doesn't fucking suck.
Seriously Bigcommerce, Shopify, Magneto, etc. All of you can eat bag of dicks and burn in hell for ever.
I don't care what languages you fancy, all of their stacks are a pile of shit, monkey patched together with popsicle sticks and duct tape and it all falls apart with high concurrency.
All their greasy haired sales teams will throw all manners of horse shit at the poor bastards who are trying to run a business so they can pad their commission checks... "High availability", "scalable", "reliable", "Increased conversation rate"... Lying dick fucks, all of them! I am calling them the fuck out on that snake oil they're all peddling.
The only thing worse than their shit APIs is the shit documentation and the shit support that accompanies them.
Support of these platforms are pretty much all the same, sure mayhaps one has 24*7 phone support and another closes at 9 or some shit like that, either way the only people they put on the phone are monkeys that will freeze up and say "I'm not a developer so I can't help you"... Guess what, "Eric"! I didn't ask if you're a fucking dev! I'm calling because one of your devs fucked up and I need you to tell him to unfuck it so I can get the fuck on with my day!
Their app/plugin market places are shameful to say the least. The overall quality of software is somewhat dire and it's mostly dominated by oversees developers who speak English about as well as the language they're developing with (not very well usually).
I could go on until I hit the character limit but I'm gonna end it here by saying, all shopping carts suck and they should burn for eternity in the depths of hell so that a savior can free all developers from this agonizing torment.9
Customer: “How many concurrent users can use this app?”
Me: “web tech is stateless. (Insert explanation) So concurrency is meaningless.”
Customer: “yeah but how many concurrent users?”
Me: “infinite as long as they aren’t interacting with the server.”
Customer: “but how many?”
Recruiter: What is Go?
Me: It's a newish programming language developed by some really cool guys at Google with C-like syntax and great concurrency support.
Recruiter: So it's like Google's version of RESTful?
I found university very worthwhile, mainly for what it exposed me to that I wouldn’t have necessarily learned otherwise. University exposed me to a lot of knowledge which allowed me to discover the fields and concepts that really interested me. It also forced me to learn math, and I’ve come to really love mathematics, even though my knowledge is still not that deep. I really respect and appreciate math now that I have more than a superficial understanding of it.
CS-wise, the things that have been most useful in practice have been complexity, data structures, concurrency, and others, but complexity is probably the absolute most important thing to at least learn the basics of.
I would not say that university is a necessity though. You can absolutely get by teaching yourself, especially if you are disciplined/interested enough to keep doing it. The important thing is to learn *what* to learn.2
This is getting annoying.
For the past >half a year I've been chasing windmills. This is what my BAU day looks like:
- We login to client's network
- We start running some Sanity tests before the actual runs (actual runs are hell of an expensive (financially and time-wise) thing to launch) to make sure environment is OK.
- Sanity tests fail. wtf? Nothing's been changed since y-day!
- Spend ~3-4 hours digging logs, code, more logs,... Apparently some genius decided to change a single parameter.
- Spend another 1-2 hours trying to work around that parameter (since apparently that genius did have a task to do that, so we'll most likely have to find a way to live with it)
- Restart the whole env (~30min).
- Launch a Smoke, Sanity tests to verify env state.
- Launch the actual test
- Go home.
- We login to client's network
- We start running some Sanity tests before the actual runs to make sure environment is OK.
- Sanity tests pass.
- Run the actual test
- Concurrency on RDS database is sky-rocketing! WTF did that come from??? Nothing's been changed since y-day!!
- Spend ~1-2 hours looking for anything changed, dig some logs for anything unusual. Nothing.
- Escalate to DBA. 2 hours later DBA says "fix the app". thanks for nothing mate....
- Spend remaining 2 hours analysing AWR. Give up, restart the whole RDS instance. Another hour wasted.
- Time to go home. Out of curiosity run Sanity test -- all good. Run the actual test -- all good. wtf??
- Go home
- We login to client's network
- We start running some Sanity tests before the actual runs to make sure environment is OK.
- Sanity tests fail. wtf? Nothing's been changed since y-day!
- Spend ~3-4 hours digging logs, code, more logs,... Apparently some genius decided to change a single parameter.
- Spend another 1-2 hours trying to work around that parameter
- ..... I think you know where this is going.
And this keeps going on and on, day by day. Spending the better half of the day chasing windmills and doing our actual work on the last hour of the working day or even after that.
We have plenty of interesting tasks in our Jira but we're squirels spinning in the wheel and never being able to touch them.
It feels like I'm wasting my time. I could do so much more with my time!
[just needed to vent ]1
As we're all going about our various Easter, Passover, et al., family celebrations, I have the perfect solution to help train your families to stop asking you for help with mundane computer stuff:
Every time someone asks you to do/fix something, give them a full talk about what is going on in their computer around that system.
Don't forget you can talk about lots of things too:
- TCP IP / socket networking
- multi-threaded programs vs. single threads
- RISC vs. CISC processors
- Why linux is better than Windows or Mac
- logarithmic runtime
- teach them how to convert between hex, binary, and base ten
Really pour it on too. Soon they'll either figure out that you are a highly-skilled individual who is not their personal geek squad, or they'll be too afraid of a big lecture to ask for help.
Works with my in-laws like a charm.6
My most satisfying bug fix?
I found a core concurrency issue in this gnarly homegrown ORM and reported it to the lead devs, who (very defensively, having written the damn thing) argued that it would never pop up in a prod environment and I was stupid for even bringing it up. Theoretically, this bug could cause pretty much every foreign key to be assigned to the wrong parent, but only if multiple instances of the application were open/running at once. They were so certain it would never happen on live that they explicitly instructed me not to fix it. After all, this bug had been active for many years on a previous project and nobody complained.
Problem was, that previous project was something that only a single user had open most of the time (think: a manager). The new project was something that would be used by multiple people at the same time (think: all the employees). Once we released this new-project-with-old-orm, it didn't take long at all for our customers to start complaining.
After that, they let me fix the bug. :)
Been working on 'MVP' features of a new product for the past 14 months. Customer has no f**king clue on how to design for performance. An uncomfortable amount of faith was placed on the ORM (ORMs are not bad as long as you know what you are doing) and the magic that the current framework provides. (Again, magic is good so long as you understand what happens behind the smoke and mirrors - but f**k all that... coz hey, productivity, right?). Customer was so focussed on features that no one ever thought of giving any attention to subtler things like 'hey, my transaction is doing a gazillion joins across trizillion tables while making a million calls to the db - maybe I should put more f**king thought into my design.' We foresaw performance and concurrency issues and raised them way ahead of the release. How did the customer respond? By hiring a performance tester. Fair enough - but what did that translate into? Nothing. Nada. Zilch. Hiring a perf tester doesn't automagically fix issues. The perf tester did not have a stable environment, a stable build or anything that is required to do a test with meaningful results. As the release date approached, the customer launched a pilot and things started failing spectacularly with the system not able to support more than 15 concurrent users. WTF! (My 'I told you so' moment) Emails started flying in all directions and the hunt for the scapegoat was on (I'm a sucker for CYA so I was covered). People started pointing in all directions but no one bothered to take a step back and understand what was causing the issues. Numero uno reason for transaction failure was deadlocks. We were using a proprietary DB with kickass tooling. No one bothered to use the tooling to understand what was the resource in contention let alone how to fix the contention. Absolute panic - its like they just froze. Debugging shit and doing the same thing again and again just so that management knew they were upto something. Most of the indexes had a fragmentation of 99.8% - I shit you not. Anywho, we now have a 'war room' where the perf tester needs to script the entire project by tonight and come up with some numbers that will amount to nothing while we stay up and keep profiling the shit out of the application under load.
Lessons learnt - When you foresee a problem make a LOT of noise to get people to act upon it and not wait till it comes back and bites you in the ass. Better yet, try not to get into a team where people can't understand the implications of shitty design choices. War room my ass!3
I started a project at high school 7 years ago, I had no idea what's clean code or design pattern, just learn while keep coding. I eventually stopped because my code is so terrible I cannot understand it anymore.
Now, after 1 year of working, I look back those dirty codes and think it is actually not that bad. Within hours I even fixed a bug with concurrency.
I start to think, instead of learning to how to write good code, maybe I should learn how to read bad code. That's just much more practical.5
Historically I've done Java but have recently moved to C# and got the book to do a cert.
Who thought it would be a good idea to start chapter 1 with threads, concurrency, asynchronous calls and PLINQ, then covering boolean expressions, if statements and loops in the section after??6
This is easy. Irl fork and acquire commands to let me reposess the knowledge of my children.
Things i can do while playing games:
5: travel the world
6: troll my ex
7: read every post on DevRant1
So I realized:
No matter what terms we replace master/space with, it still implies one is better that the other, or in charge of the other.
This isn't equal! I demand process rights! So I say we make a deeper change! We change the fundamental way concurrency works in python so that all forks are equal! In fact forks are divisive. We should do away with that too.
Make python single threaded again.1
Fuck this shitty C ecosystem! Multible compilers, one standard complying, one hacked toghether? Only one GPL poisoned standart library, with no real chance of switching it, which prevents me of making staticly linked programs? And then there is microsofts compiler, with fucking ANSI support. Thanks. No dependency handling. Concurrency? pthreads. Are you fucking kidding. JSON? Have fun finding something static. Compile times where you can read entire books. Segfaults without one helpful info, so you have to debug with prints. And every library, every tool, installer, compiler, stdlib, anything is poisoned by GPL. But hey, its fast. And efficient. After you spend many slow and inefficient months developing something. I am so done with this shit.
Tommorow i will continue working with C on my backup project.
Did i mention that the stdlib has no features? Not even threading? Which is IN THE STANDARD?8
One of the largest companies on the continent. Uses Oracle on AWS RDS with the beefiest resources available. It comes to the point where lowering the number of CPUs boosts the DB performance up (concurrency). Point is - Oracle is sweating hard during our tests. You can almost feel the smell of those hot ICs on AWS servers.
And then someone at higher levels, while sitting on a pooper, has a great idea: "I know! Let's migrate to Aurora! They say it's so much faster than anything there is!"
Tests after migration: the database on the largest instance possible shits itself at 10% of the previous load: the CPU% is maxed out (sy:60%,us:40%), IO is far, far from hitting the limits.
Is it really possible Aurora will cope with the load better than Oracle? Frankly, I haven't seen any database perform better than Oracle yet. Not sure if it's worth to invest time in this adventure..2
The company that I work for just opted for PHP in favor of Elixir, Node and Scala(Akka really) for building a high-concurrency system, because we have more people who work with PHP (mediocre skill really). How do we convince our team leads and higher-order beings by the hierarchy to try newer (or at least better suited) technologies? Good luck popening and pthreading stuff on this project I guess.11
The joys of working remotely: you're on the toilet, happily dumping, with your phone in your hand. Suddenly you receive a message from your manager who wants to chat about something urgent.
How do I explain the reason why he has to wait a couple of minutes?6
I started to realise how ugly it is.
Seriously waiting to the day browsers will work with clojurescript out of the box, without the need to compile.
The language is so clean, clear, easy and data oriented, I find it hard to go back to js.
Also, the docs are much better.
Long live concurrency !15
I used to love my job, the guy that looked forward to mondays, there was always something new to learn, I was passionate about clean code and learning new languages like Elixir. As a software engineer I thought my occupation had a special significance in this world, I saw possibility and potential of creating something so impactful on the world that it would become my legacy.
Now after 5 years I’m realising that none of this stuff really matters to the world, software engineers aren’t special and it’s evident from our salaries how valuable we are compared to other professions in sales, medicine or law. My friend who works as in customer success management makes more than me.
While some of us will be in the lucky few whose work will change the world, most of us will just be another cog in the wheel, all that matters is how many product/features you ship out, nobody gives a shit about code quality, concurrency and architecture design other than us6
Ffs, HOW!?!? Fuck! I need to get this rotten bs out.
RDS at its max capabilities from the top shelf, works OK until you scale it down and back up again. Code is the same, data is the same, load is the same, even the kitchen sink is the same, ffs, EVERYTHING is the same! Except the aws-managed db is torn down and created anew. From the SAME snapshots! But the db decides to stop performing - io tpt is shit, concurrency goes through the roof.
Re-scale it a few more times and the performance gets back to normal.
And aws folks are no better. Girish comes - says we have to optimize our queries. Rajesh comes - we are hitting the iops limit. Ankur comes - you're out of cpu. Vinod thinks it's gotta be the application to blame.
Come on guys, you are a complete waste of time for a premium fucking support!
Not to mention that 2 enhanced monitoring graphs show anythung but the read throughput.
Ffs, Amazon, even my 12yo netbook is more predictable than your enterprise paas! And that support..... BS!
We're now down to troubleshooting aws perf issues rather than our client's....
Once again, we delivered our semester project and this time, we added working concurrency to an existing functional language compiler, which is pretty cool. But I'd probably be more happy if I had been developing more on the compiler than once again being stuck writing the fucking paper because none would be arsed to write it otherwise...
One of biggest epiphanies came through this fundamental critique in SICP of the assignment operator. Through years of imperative programming it seems so innocent, doesn't it? But that you lose referential transparency, run into the alias problem and fundamental difficulty to determine object equality (or of their instances) - that was kind of eye opening considering all the pain I had already experienced with state in concurrency.
(It led me so far to think it's an ontological issue, that even in the discrete computing universe we have not come so much further than Zenon's paradoxa on change.)6
Just got started with nodejs and I never thought I’d have to use async/await this early. Concurrency seemed like a far fetched thing. Feeling like a boss😎1
Asked a provider for an endpoint that returns customer usage
Provider sends back an endpoint that takes 1 minute to return one days worth of data for 1 customer and asks we limit concurrency to 3... we have 3000+ customers with them
(1 minute * 3000 customers) / 3 = 16 hours to pull yesterday's numbers
Hope we don't get behind7
ok so i though of clearing my basics regarding concurrency and async behavior in programming. my end goal was to somehow reach rxjava and kotlin coroutines since these are the 2 common frameworks used in professional android dev . AND DAMN! since last 2 days am exploring apis and how stuff works and i have million milesss to cover.
I mean , here is a list of all the ways by which java8 (current version is java 15) achieves concurrency :BlockingQueue,ArrayBlockingQueue,DelayQueue,LinkedBlockingQueue,PriorityBlockingQueue,SynchronousQueue,BlockingDeque,LinkedBlockingDeque,ConcurrentMap,ConcurrentNavigableMap,CountDownLatch, CyclicBarrier,Exchanger,Semaphore,ExecutorService,Callable,Future,ThreadPoolExecutor,ScheduledExecutorService,ForkJoinPool, Lock,ReadWriteLock,AtomicInteger,AtomicLong,AtomicReference,AtomicStampedReference,AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray
I have always just used threads and executors. maybe once or twice a handler/ looper and never a thread pool. these all stuff are so fucking much!6
Fucking Fucking Fuck.... fucking acumatica and fucking IIS.
I’m not shitting on CS or ASP but the fucking windows server/IIS implementation. No one should use that shit. Fucking horrendous garbage.
Literally every goddamn thing we do in acumatica has major fucking gotchas.
Today apparently goddamn concurrency is fucked cause IIS and acumatica. I love friggen obscure issues being only documented in a friggen comment on a damn post in a random difficult to search corner of the friggin internet.5
To be a Java (or other business popular language) developer
* Java 6, 8 and features up to 14
* SQL + nosql
* Logging eg log4j2,
* Searching eg elastic stack
* Framework (at least 1, but hey, knowing 1 is lame..)
* Networking or at least base http knowledge
* Tomcat, jboss or other shit
* Aws, heroku, GCE or other SAAS/paas
* Rest, RPC, soap
* Business Hello World example
* Hexagonal Architecture
* 12 app factor
* Security, oauth2
* Eureka or consul as service Discovery
* Config server
* Hazel cast
* Endless story ...
Then we can start hello word app2
What do you think of Elixir + Phoenix to build API’s? Is it a better choice than a more established language like Python or something more new like Scala or Clojure?
At my company we're going through a watershed moment where we're starting to discuss and think about re-building our digital foundations and nothing is off limits. I'm leading the discussion about our architecture where everyone can have their say into what the future looks like for our applications. We're currently on a Drupal (CMS) + PHP7/Symfony (Backend Content Repository) + Symfony Twig templates (Frontend)
Even though I have been developing in PHP most of my career, I personally love Elixir and spend a lot of my time away from work learning it but many of my reasons feels subjective like pattern matching, it's actor concurrency model, immutable data and not having to deal with classes/objects, and I'm not entirely sure how that translates to business value, advocating successfully for a tech stack change requires solid reasoning and good answers to challenges like how do we find Elixir developers when existing devs leave, how easy is it to build a CI/CD pipeline for Elixir/Phoenix, etc.4
Sometimes my hatred for code is so.. overwhelming that I think I need a sabbatical or should even stop altogether.
Let's face it. All code sucks. Just on different levels.
Want to go all bare metal? Love low level bit fiddling. Well, have fun searching for concurrency, memory corruption bugs. Still feel confident? Get ulcers from large C/C++ code base already in production, where something in the shared memory, function pointer magic is not totally right?
So you strive for more clean abstractions, fancy the high level stuff? Well, can you make sense of gcc's template error messages, are you ready for the monad, leaving behind the mundane everyday programmers, who still wonders about the scope of x and xs?
Wherever you go. Isn't it a stinking shit pile of entropy, arbitrary human made conventions? You're just getting more familiar with them, so you don't question them, they become your second skin, you become proficient - congrats you're a member of the 1337.7
I have very mixed feelings about Go's KISS policy. They did manage to keep a lot of stuff easy and they force dev's to not over complicate their code. But there is a line. Generics aren't that hard to grasp. I get focusing on *fearless concurrency*, but how about *fearless list processing* FFS5
Spent an hour trying to optimize some code but none of the stuff I was trying (rearranging/overlapping DMA transfers with other stuff for some ye olde concurrency) seemed to be doing anything.
Aaand obviously the stupid thing was set to autobuild Debug config on save but I was testing Release config. Sigh.1
I have been trying to understand kotlin coroutines for a day and I UNDERSTOOD NOTHING!! 😭😭😭 makes me doubt my whole knowledge of concurrency and async programming and that's also probably too much incomplete.
Somebody please help!6
Currently fixing concurrency issues with a callback which is called so frequently it probably has multiple instances running and which can't ever be paused. Also, it isn't allowed to allocate or free memory. Riddles like this are the reason I got into computer science.
First rant in a while, been up to my eyeballs in uni work; still am.
I have a week to finish my concurrent programming assignment, and I'm stressing a little.
On one hand, I have to figure out a way to make a resizable lock-free hashmap.
On the other, essentially implement snapshot isolation for a sql database.
It's going to take a couple of long nights I suspect.3
CSP-Style-Concurrency is so freaking awesome.
You can just split your application into independent modules that communicate with channels.
Wow, yesterday was fun!
I had a rather buggy piece of code, it was bad when I first wrote it, and then I fixed it up, and it was still bad. Now I rewrote almost all of it, and it's much better.
Bad? How? Well, it was in Go, and it's basically an agent meant to execute tasks one at a time, and report the results back to home (live). Now while it worked, it was really flimsy, race conditions, way to much blocking, bad logic, and some very bad bugs.
So I had to rewrite it. Time for a quick primer on the design of this: you have a queue, a task gets add to the queue, the task manager runs the task. In the mean time, the agent is polling the host with the latest output from the task, and also receives new tasks to run (if there are any).
Seems like something that's for a messaging queue, you ask? Well, that would be true if each task was able to run on any random agent, but each task is only meant to run the agent it's tasked to (the tasks are of administrative nature al la apt-get), so having a whole separate service is a tad overkill.
So rewriting required rethinking how the tasks are executed by the task manager. I spent a day on this, it was fun, I ended up copying go contexts (very simple model, very useful). Why copy and not reuse? Because this is meant to be low memory code, so any extra parts are problematic, and I didn't really see a use for having a whole context, I just needed a way to announce that a task is done.
Anyways, if you're interested to see how the implementation worked out: https://github.com/chabad360/covey/...2
I knew concurrency is *bad*, but *that* bad‽, just shocked: https://blog.bugsnag.com/bug-day-ra...2
I'm still on a regular basis reminded of how I might be wrong despite the absolute certainty in how obviously wrong the other person is.
Lately I've been working on setting up this API with a fairly intricate database integration. One request can lead to multiple db calls if we're not careful, so we have been polishing up the implementation to guard against ddosing ourselves and dealing with thread-unsafe concurrency.
Someone on the team could happily report that they got rid of all async use so there should no longer be threading issues. "You mean it all runs sync now?" "I guess. It works at least".
I'm just internally pulling a surrender cobra. If this was pre-dev me I would have let him and everyone know what a stupidpants he is and that I thought he had some experience in api development. But let's not make an exception to the rule; I might be wrong. I mean I'm not, but let's pretend I could be. Let's pull down the changes and maybe set up a minimal example to demonstrate how this is a bad idea.
Funny story. He got rid of explicit calls to the database entirely. When resolving data, the query is instead constructed virtually and execution is deferred until the last step. Our functions are sync now because they don't call the database, and threading isn't an issue since there's only one call per request context.
Thank god I've learned to keep my mouth shut until I can prove with absolute conclusive certainty that they are wrong. Here's to another day of not making an ass of myself.
Any good Golang tutorials on concurrency/goroutines?
I kinda understand the principles but I fail to develop something a bit complex, like one example presented during a conference about coordinating chefs on a kitchen :/1
Golang tutorials trying to explain the difference between concurrency vs parallelism be like "Oranges are different from oranges. Oranges are juicy while oranges are juicy. They are not to be confused, u newb"1
Damn, I'm conducting some benchmarks on go and php...
A php page that simply returns "hi" with no framework is a lot slower than 1000 calls with 200 concurrency to a go function that queries redis and returns a json.1
Wow Go is awesome, throwing some of its magic and making data ingestion that took one minute plus and make it run under 3 seconds.
! rant, needing advice
I'm about to start a big and ambitious project, and I'm stuck with a dilemma: what to pick for the back end server, node js vs Java JEE
so... i have been working on an app that has a very decent and stable architecture that help us expand and add new features very quickly. i joined this company around 5 months ago as a fresh out of college junior dev.
I have now grown quite used to this cool architecture. i know where most of the things are and its easy for me to add new features by mainly looking at the old similar implementations.
however there is this section of code that is in the core, which is like the skeleton of our app that powers the whole system. All the tricky stuff DI,networking , concurrency, sync , etc is handled by those core abstract, generic classes .
I want to learn about that. it always feels like we got a building that is already standing tall and firm and we are just adding glasses to various places by looking at already attached glasses. i know the next company that i might join won't have this kind of architecture, so i should be prepared about how those stuff worked, the libraries the powers our core app structure work.
So how can i start with this? what should i ask my Tech lead or pm so i get a chance to work on this? I guess business requirements won't ever allow me to work on those4
I have an app I have developed that uses concurrency. My dev env allows me to select different targets. One of those targets is WebAssembly. So I got it configured and decided to test my app. It immediately failed on compile due to the concurrency module missing. I later found that for my dev env concurrency for webassembly is experimental.
So concurrency is a thing for webassembly, but the support on my dev env end is not there yet.
Is threading difficult in webassembly?2
Are there any best practices for binding C-librarys to a higher level language?
Like, regarding Concurrency-Safety, memory-safety, general fault-tolerance, glue-datastructures with low overhead?2
I once did this project with Apache Tika, which also has a batch module to add concurrency (Tika by itself is not thread-safe).
However, there is maybe 2 pages of documentation which don't explain any of the classes etc, and no javadoc, so I had to figure everything out through trial and error. At the end it still threw an error but magically worked. Turns out it was not fast enough anyway.
I would have wanted to bring up SICP again, with the great big warning about the evil assignment operator and state and all the troubles that ensue (just think: concurrency).
But in a way, nothing has really come up from this or my attempts to dig deeper into "everything is a file/object" (Unix, smalltalk), neither from formal languages or the Curry-Howard correspondence. - Maybe there's just nothing, no firm bottom ground to discover. Like the physicists going for their world formula, but instead of a grand, beautiful symmetry that explains everything, we face a shattered world of (incompatible) theories, that is ever so more complex and chaotic through our theories applied to it. There may not be a Platonic ideal world of ideas, but rather partial constructs explaining some particular perceptions.
Similarly the one perfect programming language to rule them all, the perfect abstraction, pattern is probably just another prepubertal fantasy to be sunk.
So maybe instead of seeking the perfect epiphany, we should go for something quite different: the nagging, brooding uneasiness that something is wrong there, that there's something to be fixed... that even negative feeling would propel us to search further, not to stay in whatever is touted as the real thing.
Such irritations I found with Pieter Hintjens' writings. For example when he actively engaged in conspiracy theories. And I'm still not sure, if he just went off the cliff or he's even right alluding that these theories are an act of sanity, a self-defence against the hidden evil mights. I just don't know. Anything.
I'm building an Android app from ground up targeting to have functionalities added without much effort in succeeding phases.
What I'm pissed about mobile development at the moment though, is its lack of structured code base that is easy to follow. Unlike web where codes are modularized and well placed, in mobile, I kept going back and fort in different modules to see how they are used in all places in the project which made it tedious as time goes.
So I kept a notepad keep track of detailed flow. However, once I go back at the notes to place them on top of your head, the almost spaghetti-like structure just becomes very hard to track. For me it doesn't follow a pattern and that developers are free to do what ever they wish so as long as it can run in the device or emulator.
For instance, implementing concurrency as well as dependency management and a Clean architecture is such a pain. I hope i can relate to someone here.
If only there is a standardized way of structuring codes in android in Java or Kotlin (haven't tried this), there would be hope for me. So if anyone can provide a good, readable, reliable android project that I can start building my project on top of, your help will be greatly appreciated! Thanks for reading.
For the first time, I will use “developer rant” for learning sth.
I am trying to learn concurrency in cpp. I tried CPP Concurrency in Action but the book is dry, no examples. Can you suggest a book with good examples and exercises, like CPP Primer?2
A five-minute overview of the differences between concurrency and parallelism.
Mexico just got for a big earthquake and people is organizing a lots of ways to help.
> Some guys started a webpage and they are adding useful information and data for the people. They create a repo on GitHub to improve information.
> Mexican devs start discussing which technology is better for solving imaginary problems about escalate the servers, concurrency, creating a CMS, creating a public API, tokens for publishing the API... Instead of using something quick like firebase or some Trello to just publish info.1
Hey guys, maybe you can help me out. I have wasted more time than I care to admit looking for a performant web socket solution. I want something that I can build on for several planned projects. Need high performance, low resource requirements and good stability. I don't trust server side JS.
I am very guilty of premature optimization.
I saw someone recommending Nchan, a addon to Nginx. Sounded good to me. Got it built and running. But it turned out in my initial tests that it ate CPU like crazy with just a few connections. Wasn't overly stable either. Everyone in the field claims great performance but few seems to deliver. Since I have been looking at Go based solutions because it's a language I know and it seems more promising for this than PHP.
Well the Go scene for web sockets is confused. The Gorilla ws does appearently not support concurrency, rather weak for a Go package. I tried others, like gobwas. Seemed good. Got it working but it won't work with SSL. So useless to me despite much promise. Most solutions I can find are maintained by just one or two people.
Anyone has any good advice?
What is the biggest user system have you implemented ( e-commerce, social media , video streaming etc) and what was your approach?
My current biggest product is a kind of social media app that is still in development and even when completed would be used by no more than 50 ppl.
In terms of scale i have a simple offline app being used by 7k,+ people, which does has some offline dbs, but overall with a very simple architecture.
I am always afraid of coding stuff that would be used by 100k, million or billion peeps... What challanges in terms of architecture , frontend , concurrency, offline persistence and networking arrive when a code grows?1