• 2 Posts
  • 29 Comments
Joined 1 year ago
cake
Cake day: June 24th, 2023

help-circle


  • Kinda, I guess we all can agree it’s more typical to deserialize into POJO where theres is no such thing as missing field. Otherwise why would you choose Java if you don’t use types. This great precondition for various stupid hacks to achieve „patching” resources, like blank strings or negative numbers for positive-only fields or even Optional as a field.








  • I don’t know. Maybe read article. It says „Korean military”. According to them stock Android with 3rd party security app is acceptable and has no security concerns. Article itself highlights that 3rd party security apps are inferior and security holes in Android OS are basically neglected by Korean military since they will be addressed in updates at some point.

    OS does not matter when approach to security so superficial. Judging by this article Korean military has less robust security practices than some banks.

    Everyone here talking about some hypothetical Android based custom OS built for Korean military which does not exist and it is not what Korean military doing. They are allowing stock Android OS with „security app”. Not surprised they are not building custom OS because it is economically idiotic idea. You need army of cyber security experts familiar with Android OS architecture that will review whole OS code and customize for military. Then you need to pen-test it and keep on doing it on each upstream OS update or fork it and maintain internally. Which is another can of worms coz you’ll need to make sure internal fork works fine with up-to-date versions of apps. Otherwise you just have dumb smartphone with higher risk of vulnerabilities in outdated apps. At this point as I said, just force sensitive staff to use dumb phone or internal landline.

    And don’t tell me “but Samsung is Korean they can do it for Korean military”. It doesn’t not change the fact that it will cost astronomical amount of money and time. Can Samsung do it? Probably yes. Will Korean military be able to offer enough money to probably the only local company that can do it which also has revenue of approx. 20% of Korea’s GDP. I doubt.






  • My colleague was working on migrating around dozens of batch jobs written in Java. All jobs had JPA/Hibernate but people which were writing those jobs didn’t understand abstraction and encapsulation. It end-up as vendor locked as you can imagine. Procedures, reading cursors, Oracle specific functions, metadata, logic spread between Java and PL/Sql, all the fun stuff, you know. So it took around one year of work to migrate to Postgres. And that’s with support of DBA who was helping with rewriting most complicated queries and procs. So yeah, don’t worry about that DBMS specific features.

    Don’t get me wrong, though. Efforts spent on making design decisions should be proportional to potential size/complexity growth of the software. If you building todo list , how many different queries you might have in fairly pessimistic scenarios? Maybe couple dozens. Don’t bother with JPQL or HQL. If you expect your app to grow significantly. I’d do as much as possible to avoid my colleague’s fate.


  • As a non-native speaker I find woman more offensive than female. Noun male/female puts all as equal. Girls, boys, birds, ponies. Woman, though, seems to be de-attached. Especially when talking about humankind it’s common to refer to humans as just „man”. „No man been there”, „for all mankind”, „dog is a man’s best friend”. As it applies to man only and woman doesn’t count


  • I don’t think loop vs recursion choice is what significantly impacts performance in most cases. Most of the software I saw, suffer performance because of wrong API design or overall architecture. If app needs to fetch 100 objects from API which can provide only one object at the time no optimization will save that app.

    App team - we need bulk API.

    API team - cannot because of capacity, budget, backward compatibility, DB, 3rd patry API, not a KPI

    Also it’s mostly QAs measuring performance and validating it with product guidelines which set by person who mostly detached from specific product and sometimes reality.




  • I didn’t get do you do integrations besides of your DB.

    To me architecture sounds good anyway. I’m not GO dev but it looks like stack is your main problem not architecture itself. Multiple models is great long term approach which makes sure you are not leaking implementation details of your persistence/3rd party services to your client. You have layer of mappers where you can enrich model in optimal way and at the same time you can accommodate whatever client request/payload quirks you may need. Yes it’s sometimes annoying to add one field and pass it across all layers but it’s the price and software development is all about balance and compromises. I worked in projects that didn’t follow this architecture and any kind of change in DB/3rd party were cascading through entire application so end up changing hundreds of files instead of couple of models and few mappers

    You may have issues with this architecture if you invoke services directly one from another for complex use cases. This can couple things together. If that’s what’s happening think if can apply Facade. Try using/reusing more trivial and focused services in Facade to make sure that for example Order service does not depend on Client service. Leave it to ClientOrderFacade.