All posts by admin

Xcode Tips

1. Get 5.5 inch iPhone screenshots for submission

  • Open Xcode.
  • Go to Settings > Platforms.
  • Click + button.
  • Click iOS… menu item.
  • Select iOS15.5 Simulator.
  • Click Download & Install button.
  • Go to Windows > Devices and Simulators.
  • Click + button.
  • Enter iPhone 8 Plus to Simulator Name.
  • Select iPhone 8 Plus for Device Type.
  • Select iOS 15.5 for OS Version.
  • Click Create button.

 

How to Back Up and Restore Photos and Music on MacBook

Motivation

You want to back up and restore your photos on a MacBook.

Solution:

To back up your images:

  1. Quit Photos app.
  2. Go to /Users/yourname/Pictures.
  3. Copy Photos Library.photoslibrary to your backup location.

To restore your images:

  1. Quit Photos app.
  2. Copy Photos Library.photoslibrary from your backup location to your MacBook.
  3. Hold down the Option key and double-click the Photos app.
  4. In the Choose Library dialog, select your Photos Library.photoslibrary.
  5. Click Choose Library button.

To back up your music:

  1. Quit Music app.
  2. Go to /Users/yourname/Music.
  3. Copy Music Library.musiclibrary and Media folder to your backup location.

To restore your music:

  1. Quit Music app.
  2. Copy Music Library.musiclibrary and Media folder from your backup location to your MacBook.
  3. Hold down the Option key and double-click the Music app.
  4. Click Choose Library… button.
  5. Select your Music Library.musiclibrary.
  6. Click Choose button.
  7. You may also go to Music > Settings… > Files  and change Music Media folder location.

 

 

How to Discover Requirements for a Maintenance Project

Problem:

You are responsible for capturing and analyzing requirements for a project to enhance a legacy system however misunderstandings happen too frequently among your team members.

Context:

A maintenance project is very different to a greenfield project. The key difference is that a business analysist who is responsible for discovering requirements must be not only domain expert but also be able to communicate with technical experts very well. In other words, the business analysist must both be familiar with the legacy system workflows and have adequate technical background.

Suggestion:
  1. Collect existing artifacts, including software products, user guide, administrative guide, installation guide, deployment schema, design specification.
  2. Build a glossary and reference sources.
  3. Get initial agreement about terminologies (terms).
  4. List all system roles.
  5. Walk through the existing user interfaces to determine existing roles and related core use cases.
  6. Collect business problems or needs.
  7. Distill navigation flow and user interfaces related to customer’s problems or needs. Try to find out the exact screens in the existing system related to customer’s problems or needs.
  8. Clarify terminologies. Ask for example values, files, tools for doing something related to unclear or ambiguous terms.
  9. Identify correct problems by asking for demonstration of the issues or limitations of the current system, step-by-step illustrated examples with actual existing values, drawing sketches for guessed needs using a pencil or a tool.
  10. Identify correct needs by asking for user guide, video demonstration of a feature, 3rd party installation files and custom scripts if available, example input data and output reports.
  11. Document business needs by creating use cases with mockups. There might be a need of review of the existing source code and database to indentify initial draft technical solutions when creating these use cases to ensure that they are feasible.
  12. Identify affected features by revising the use cases with additional steps, mockups, data inputs/outputs, descriptions. There might be a need of review of the existing source code and database to indentify initial draft technical solutions when identifying the affected features.
  13. Identify affected roles by revising the use cases with additional or new business rules for all related roles.
  14. Some enhancemens related to technical aspects might require collecting existing technical artifacts. These artifacts might inlcude current database or data schemas, and current software products and source code if possible.
  15. Install tools related to existing source code, then build and run existing source code and database if they are available.
  16. Collect technical problems or needs by listing current technology issues using notes or diagrams.
  17. Analyze techincal needs. These might be data integrity issue (missing or duplicated fields? missing or duplicated rows?) or performance issue (too many rows to handle by current software?).
  18. Finally document technical needs by creating an existing architecture and a proposed future architecture. There is surely a need of review of the existing source code and database to indentify initial draft technical solutions when creating existing architecture and a proposed future architecture.
Things that have to be discovered and confirmed:
  1. Legacy systems: Examples might be access to legacy systems, captured UI screenshots of each sub-systems, parts of database schemas, example data, example legacy source code, legacy codebase.
  2. Problems: Examples might be lack of documentation and expertise, non-scalable architecture, high cost development for new features, unfriendly UI/UX, performance issue.
  3. Goals: Examples might be migration of legacy system to event-driven, cloud based microservice architecture with modern UI/UX.
  4. Budget: Used to select appropriate technologies. Some cloud services, e.g. Salesforce Platform or AWS relational databases, might be very expensive.
  5. Initial text or diagrams: Ask for clarifications of ambiguous terms or components. Does initial proposed solution just need to be general? Should proposed architecture need to be adapted to specific problems, needs, legacy codebase, existing data, and budget?

 

 

How to Use nuget

1. Downloading packages to a build server
Motivation:

You have a .NET solution that uses NuGet package manager.

You have many files in the packages folder and want them to be downloaded to your build server.

Solution:
  • Download Windows x86 Commandline.
  • Copy nuget.exe to an folder and add the folder path to Windows PATH.
  • Open Command Prompt and execute the commands below.
    cd D:\Build\Source
    nuget restore YourSolutionFileName.sln
    
2. Downloading (Restoring) packages using MSBuild
  • Execute the commands below.
    "C:\Program Files\Microsoft Visual Studio\2022\Professional\Msbuild\Current\Bin\MSBuild.exe" "../YourSolution.sln" -restore -p:RestorePackagesConfig=true
    
3. Reinstalling packages for a solution using VS Studio
  • Open Tools > NuGet Package Manager >  Package Manager Console.
  • Execute the commands below.
    Update-Package –reinstall
    
4. Configuring package restore when building a project using VS Studio :
  • Open Tools > NuGet Package Manager >  Package Manager Settings.
5. Reverting PackageReference project to packages.config:
  • Copy and  overwrite project file from backup created by Visual Studio or from source control system.
  • Delete all obj and bin files.

 

How to Disable Automatic Updates on Windows Server

Motivation:

You have a server with Windows Server 2016. The server Windows updates are being downloaded and installed automatically. This may affect your customers’ usage. You want to disable it so that you can install Windows updates when you find most appropriate.

Solution:
  1. Open Command Prompt (Admin).
  2. Type sconfig and press Enter.
  3. Press 5 (Windows Update Settings:), then press Enter.
  4. Press D (to select DownloadOnly option), then press Enter.
  5. Click OK button.
  6. Press 13 (Restart Server), then press Enter.
  7. Click Yes button to restart your server.

To disable automatic reboots in inactive hours, you can try the steps below.

1. Click Start and type Task Scheduler.
2. Expand Task Scheduler Library >> Microsoft >> Windows .
3. Click  UpdateOchestrator.
4. Right-click on Reboot and select Disable.

 

How to Fix EPUB Processing Failure on Google Play Books

Problem:

You uploaded EPUB file to Google Play Books but received Processing Failed error message.

Solution:
  1. Open https://www.zamzar.com.
  2. Click Choose Files and select EPUB file.
  3. Click Convert To and select azw3.
  4. Click Convert Now button.
  5. Download the azw3 file.
  6. Return to https://www.zamzar.com.
  7. Click Choose Files and select azw3 file.
  8. Click Convert To and select EPUB.
  9. Click Convert Now button.
  10. Download the EPUB file.
  11. Upload the EPUB file to Google Play Books.

Note: https://www.zamzar.com offers only 2 free daily conversions.

 

 

Topic 26 – Introduction to Cloud Computing

Why do I need to learn about cloud computing?

Because you will develop software systems that usually leverage cloud services for quick deployment or scalable computation or storage.

What can I do after finishing learning cloud computing?

You will be able to

  • deploy software systems to public clouds,
  • build your private cloud,
  • develop software using cloud plaftforms,
  • develop software using cloud services,
  • leverage cloud services for training and deploying machine learning models,
  • leverage cloud services for big data analytics and reporting.

What should I do now?

Please read
– this Dan C. Marinescu (2022). Cloud Computing – Theory and Practice. Morgan Kaufmann book, and
– this Andreas Wittig and Michael Wittig (2022). Amazon Web Services in Action. Manning Publications book, and
– this Nick Marshall et al. (2019). Mastering VMware vSphere 6.7. Sybex book, and
– this Rakesh Gupta (2020). Salesforce Platform App Builder Certification – A Practical Study Guide. Apress book, and
– this Philip Weinmeister (2019). Practical Salesforce Development Without Code – Building Declarative Solutions on the Salesforce Platform. Apress book, and
– this Tomasz Wiktorski (2019). Data-Intensive Systems – Principles and Fundamentals using Hadoop and Spark. Springer book.

Terminology Review:

  • Software as a Service
  • Multitenancy
  • Infrastructure as a Service
  • Virtual Machines
  • Software-Defined Networking
  • Infrastructure as Code (IaC)
  • Platform as a Service
  • Containers as a Service
  • Function as a Service (Serverless Computing)
  • File Storage
  • Block Storage
  • Object Storage
  • Direct-Attached Storage (DAS)
  • Network-Attached Storage (NAS)
  • Storage Area Network (SAN)
  • GFS
  • Bigtable
  • MapReduce

After finishing learning about cloud computing please click Topic 27 – Introduction to Block Chain to continue.

 

Topic 25 – Introduction to Distributed Systems

Why do I need to learn about distributed systems?

Distributed systems provides foundation for understanding theories and techniques behind cloud computing and block chain technology.

Architectures, protocols and algorithms introduced in distributed systems are necessary for creating complicated software too.

What can I do after finishing learning distributed systems?

You will be able to design software that can

  • tolerate faults,
  • shard data,
  • handle massive number of requests, and
  • perform expensive computation.

You will be prepared to learn about cloud computing and block chain technology.

What should I do now?

Please watch this Distributed Systems, UC Santa Cruz Baskin School of Engineering, 2021 course to get familar with core concepts and protocols.

After that please watch this MIT 6.824, Distributed Systems, Spring 2020 course to learn how to design a large-scale distributed system.

At the same time you can read
– this Maarten van Steen and Andrew S. Tanenbaum (2023). Distributed Systems. Maarten van Steen book, and
– this Martin Kleppmann (2017). Designing Data-Intensive Applications – The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O’Reilly Media book to solidify your knowledge.

Terminology Review:

  • Fault Tolerance
  • Consistency
  • System Models
  • Failure Detectors
  • Communication
  • Ordering
  • State Machine Replication
  • Primary-Backup Replication
  • Bully Algorithm
  • Ring Election
  • Multi-Leader Replication
  • Leaderless Replication
  • Cristian’s Algorithm
  • Berkeley Algorithm
  • Lamport Clocks
  • Vector Clocks
  • Version Vectors
  • Chain Replication
  • Consensus Algorithms
  • FLP
  • Raft
  • Paxos
  • Viewstamped Replication
  • Zab
  • Consistent Hashing
  • Distributed Transactions
  • ACID
  • Two-Phase Commit
  • Three-Phase Commit
  • Serializability
  • Two-Phase Locking
  • Distributed Locks
  • CAP
  • Consistency Models
  • Linearizability
  • Distributed Architectures
  • Distributed Programming
  • Hadoop
  • Spark
  • Tensorflow
  • PyTorch
  • Kubernetes
  • Bitcoin
  • Smart Contracts

After finishing learning about computer networks please click Topic 26 – Introduction to Cloud Computing to continue.

 

When to Use Cloud Resources

Motivation:

  • You are using on-premises virtual servers and storage for your services.
  • You wonder whether you should move your services to public cloud, such as AWS or Azure or Google Cloud, in order to reduce hardware and maintenance cost.

Suggestions:

  1. It is common that cloud resources for system running 24/7 are much more expensive than private resources.

  2. Cloud resources are suitable for 
    • a very big system that needs to be run only once within limited time, or
    • startup with many consolidated services on single small virtual server, or
    • testing purpose, or
    • a very big company with big budget who want reliable and elastic resources.