Blog

  • cloud architecture

    AWS and Azure services mapping Mind Map

    AWS to Azure products mapping

    Because Azure knowledge is required during the current project, I am trying to transfer my AWS experience to Azure. 🙂 This mindmap is mapping the core services from AWS to Azure.

    This mind map is made through XMind Evaluation version.

    The official AWS vs Azure document from Microsoft. https://docs.microsoft.com/en-us/azure/architecture/aws-professional/services#ai-and-machine-learning

  • parallel

    How to handle Concurrency conflicts in DotNet Core

    This is a summary about handling concurrency in Asp.Net Core.

    Concurrency conflicts

    Microsoft Docs Handle Concurrency

    A concurrency conflict occurs when one user displays an entity’s data in order to edit it, and then another user updates the same entity’s data before the first user’s change is written to the database. If you don’t enable the detection of such conflicts, whoever updates the database last overwrites the other user’s changes. In many applications, this risk is acceptable: if there are few users, or few updates, or if isn’t really critical if some changes are overwritten, the cost of programming for concurrency might outweigh the benefit. In that case, you don’t have to configure the application to handle concurrency conflicts.

    Person Pointing Numeric Print

    Pessimistic concurrency (locking)

    If your application does need to prevent accidental data loss in concurrency scenarios, one way to do that is to use database locks. This is called pessimistic concurrency. For example, before you read a row from a database, you request a lock for read-only or for update access. If you lock a row for update access, no other users are allowed to lock the row either for read-only or update access, because they would get a copy of data that’s in the process of being changed. If you lock a row for read-only access, others can also lock it for read-only access but not for update.

    Managing locks has disadvantages. It can be complex to program. It requires significant database management resources, and it can cause performance problems as the number of users of an application increases. For these reasons, not all database management systems support pessimistic concurrency. Entity Framework Core provides no built-in support for it, and this tutorial doesn’t show you how to implement it.

    Optimistic Concurrency

    The alternative to pessimistic concurrency is optimistic concurrency. Optimistic concurrency means allowing concurrency conflicts to happen, and then reacting appropriately if they do. For example, Jane visits the Department Edit page and changes the Budget amount for the English department from $350,000.00 to $0.00. At the nearly same time, John changes it as well. More on Microsoft Docs Handle Concurrency

  • Fork MMEX Android

    MMES is a great expense track app IMO, it is open source, easy to use. Even the UI is legacy, the UX cannot compare to many great Mac Store Applications or Electron Applications. Dependents on what the users care the most, if UX/UI, please not use MMEX. If privacy and data consistency, MMEX, Gnu Cash, the open source options will be the most suitable.

    MMEX it has an android version too, when I found this app, I feel so amazed, the UX is better than the desktop version, with a simple sync solution, (syncthing, or dropbox etc), it can be very powerful too.

    MMEX Android

    The only problem is the app itself is not well maintained or developed any more now.

    As a loyal user, even the app was not developed anymore, I still keep using it, until I found an issue, when my mmex DB (SQLITE DB) size became quite big (1 Mb, I think), the app keeps crashing.

    Why MMEX Android crashes when the DB becomes large

    After check the source code, there is one assuming from me.

    1. MMEX Android will query all data in once to create a queryset, not query by demand

    When the transactions get more and more, this initial query became heavier and heavier, until and android app could not handle it.

    Very luckily, as an un-professional mobile developer and lack of knowledge of the app. I could not fix it by myself.

    There was a PR to bring MMEX Android live again(merged now) which is to make the development requirement and dependency be new and updated.

    What after giving up the Fork

    After I found the complexity, I gave up making MMEX android alive again. Instead, I started a new project which is Building SaaS, As I am much familiar with SaaS project building.

    MMSS-Nest, and SaaS version of MMEX

    There is still a lot of work todo anyway, but slowly more and more functionality was built.

  • Lineage OS 19 releasing plan and Andriod 12 new features

    Lineage OS 19 (Android 12) was release on 26th April 2022.

    What is new in Android 12

    (Android 12 is the Lineage OS 19 will be based on)

    • new color system and new design
    • smoother UI
    • accessibility, bold text, magnification etc
    • better privacy control, especially on camera and mic
    • better UI for permission control
    • extending screenshot
    • and more on andriod 12 releasing or the youtube video attached

    What will Lineage OS 19 will be

    Unfortunately, there is no official Lineage OS 19 release yet, the new Lineage OS release usually will be later than AOSP release, but it does not mean users cannot have a look of what Lineage OS 19 will be. The video below is a user who customized Lineage OS 19 based on Android 12 on Redmi Note 7 Prop.

    More about Xiaomi and Data leaking if you have a concern about privacy.

    Xiaomi Data Leak Controversy: Is Xiaomi Mobile Sending User Data To China?

    References

  • What is a real diversity in workplace

    Diversity is a real concern for more and more companies. I think the reason for that is the increasing awareness of human rights protection.

    I talked to many people in work place about diversity as well, I think different people have different understandings.

    Questions to Ask

    I knew one guy, he has opinion like this.

    We are a real diversity focused team, because we have people from Asia, we have people from America, Europe, and We have local people, we have males and females.

    I knew another person who cares about diversity in workplace, she asked a question I remembered during acquisition.

    Nearly all the board members are male, do we have a diversity in the organization, and do we really care about it?


    Honestly, I think gender diversity, nationality diversity should not be such a big concern. What is more important, is to respect the difference, and collaborate different people and understand different people to work together towards the objectives.

    It does not really matter where the person is from, or whether the person is male or female.

    Everyone is unique, if an employee’s review is based on whether he is social, whether he is good at a specific language, or on appearance, it would make it unfair, and it makes the problem in the workplace more serious to have a gender or race diversity.

    A fair and a diverse working culture should be a person’s review is basing on

    • what the person does,
    • what the persons are good at,
    • how well the person communicates, (even the work language is not the person’s native language, or whether the person communicates in a tech-guy way or not).
    • etc
    rectangular brown wooden table

    I met a colleague in workplace, he always likes to give colleagues tags, like,
    Social, Hard-working, Brave, Collaborating, etc. It is OK because of all these tags are neural, nothing good or bad. The only problem for that is the criteria, his standard is that, if you are not doing like me to meet people or talk to people, you are not social, if I cannot understand what you talk, you are not collaborating, if you do not match my exception in my mind, you are not hard-working. All criteria are subjective. This basically creates more problems in work place, even have a good diversity, but no respect, no objective standard for review, that only makes things worse.

    So IMO the real diversity is to respect the difference and the most important thing in a work place should be Respect, Objectives, Collaboration and Happiness.

  • How to install the Chinese language pack for civilization 5 on Mac?

    There is a weird situation for Chinese game players on Steam. There are Chinese language package packs, they do not work on Mac, but only on Windows.

    civ5

    I found there are 7 languages supported for Civilization 5 on Windows, but only 4 supported on Mac. Civ5 is not the only game like this, there is more.

    Anyway, Civ 5 does not require much about English profeciency, not like EU4, I found EU4 is super hard to play in non-native languages.

    How to solve this?

    I found there are a couple of discussions and community support for the Chinese language packs.

    The only problem here, is that Steam hide the BaiduYun URLs by default, and BaiduYun is not very friendly for anonymous/non-register users. It always asks users to install the App to scann the QR code to download the files. I used this online tool to get the downloading works.

    Civ 5 Chinese Language Packs 文明5中文语言包

    I download the languages packs and upload to IPFS.

    • https://ipfs.infura.io/ipfs/QmSMkdt7HdareyxsmHXtfnA7ordxkc8MDyUMX8KtLtAu9P
    • https://ipfs.infura.io/ipfs/QmbkbgWyThhKzgRNW7LDx7RqgHfMu9a6V86ZT8ekAUnVro
    • https://ipfs.infura.io/ipfs/QmaGUnsrUhv3zbLUpFsrquMRSGTvF6G5cPJ9FjqwYtvH44