All posts by admin

Topic 16 – Advanced Software Design

Why do I need to learn about advanced software design?
I think that I already learned about software design in the Topic 13 – Introduction to Software Design.

Now your task is not just to build a house.  Your task is to build a city. Now you will create very complicated software. You are responsible for creating a software system containing about 10,000 classes or functions for 5,000 people to use in 15 years. The maximum system downtime must be less than 5 minutes per year.

Image that you have to create a system that serves millions of users simultaneously like Facebook or YouTube or Amazon or Office 365 or GMail. Are you comfortable with building one.

Image that you are tasked to create a web framework for developers to extend such as ASP.NET or Yii or React. Are you confident in creating one?

If you are not sure how to fulfill these tasks then probably, you should learn how other people crafted similar systems and adapt their experiences to your case. Advanced software design introduces knowledge and tools to you so that you can begin to build your own complicated software.

What can I do after finishing learning advanced software design?

You will know how to design a complex software system that satisfies not only functional requirements but also security, modifiability, scalability, reusability, extensibility and reliability requirements.

That sounds interesting! What should I do now?

Advanced software design requires a lot of reading. Please do review the software design knowledge introduced to you in the Topic 13 – Introduction to Software Design first.

Nowadays software can be applied to many fields. Each of them requires specific advanced software design knowledge. In this topic, we only focus on enterprise software due to its popularity.

Before you design a complicated system you must thoroughly  understand its sophisticated requirements. This is a critical step when building a large system.

Please read this David C. Hay (2002). Requirements Analysis: From Business Views to Architecture. Prentice Hall PTR book to learn how to elicit, analyze and document requirements for an enterprise system.

After that please read this Philip A. Bernstein and Eric Newcomer (2009). Principles of Transaction Processing. Second Edition. Morgan Kaufmann book to learn about transactional processing principles and techniques.

After that please read
– this Eric Evans (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison Wesley book, and
– this Jimmy Nilsson (2006). Applying Domain-Driven Design and Patterns: With Examples in C# and .NET. Addison-Wesley Professional book, and
– this Dino Esposito and Andrea Saltarello (2014). Microsoft .NET: Architecting Applications for the Enterprise. Microsoft Press book, and
– this Vaughn Vernon (2013). Implementing Domain-Driven Design. Addison-Wesley Professional book to learn how to leverage domain-driven design approach to reduce system complexity.

After that please read
– this Mark Endrei et al. (2004). Patterns: Service-Oriented Architecture and Web Services. IBM Corp book, and
– this Sam Newman (2021). Building Microservices: Designing Fine-Grained Systems. O’Reilly book, and
– this Sam Newman (2019). Monolith to Microservices – Evolutionary Patterns to Transform Your Monolith. O’Reilly Media book, and
– this Cloves Carneiro and Tim Schmelmer (2016). Microservices From Day One. Apress book to learn how to design microservices.

After that please read
– this Martin Kleppmann (2016). Making Sense of Stream Processing. O’Reilly Media book, and
– this Nathan Marz and James Warren (2015). Big Data: Principles and Best Practices of Scalable Realtime Data Systems. Manning Publications book, and
– this Ian Gorton (2022). Foundations of Scalable Systems – Designing Distributed Architectures. O’Reilly Media book  to learn how to leverage event sourcing and stream processing to design scalable big data software systems.

Terminology Review:

  • Enterprise Applications
  • Enterprise Systems
  • Transaction Processing
  • Domain-Driven Design
  • Factory
  • Repository
  • Microservices
  • Command Query Responsibility Segregation (CRQS)
  • Event Sourcing
  • Stream Processing
  • Lambda Architecture
  • Kappa Architecture
  • Event-Driven Architecture
  • Serverless

After finishing learning this topic please click Topic 17 – Calculus to continue.

 

How to Install Windows XP from a USB Flash Drive?

Why install Windows XP?

Sometimes you do need Windows XP for some specific tasks. For example running and testing old programs, a specific program, using your old computer for a specific task.

This is a  short guide to install Windows XP from a USB flash drive.

Requirements:

1. Windows XP installation files (you can use any Windows XP disc or ISO file).

2. DOS.zip file (download)

3. A USB flash drive of at least 2 GB (The best size is 1GB or 2GB. Some old computers do not allow to boot from USB having size being larger than 1GB).

4. A Windows 7 OS or a previous version.

Procedure:

1. Attach the USB to your computer

2. Unzip DOS.zip and run HpUSBformat.exe (this program can only be run under Windows 7 or a previous version), select below option values

  • File system: FAT
  • Volume label: SYSTEM
  • Select “Create a DOS Start up disk”
  • Select radio button “Using DOS system files located at:”
  • Enter the path where you have extracted DOS.zip files (Give the path of DOS folder).

3. Copy all other files from DOS folder to your USB disk (you can overwrite the existing ones).

4. Copy all the Windows XP installation files (I386) to the USB drive.

5. Boot system from the USB disk (you may need to adjust your BIOS for this).

6. Type fdisk, hit Enter and follow the instructions to create a partition for a new XP installation.

7. Type format d:/s to format the partition in the 6th step. If the partition already exists then use command format d:/q/s.

8. Type cd I386 and hit Enter to go to the I386 folder.

9. Type winnt and hit Enter.

10. Follow the screen instructions.

Important note: Your hard drive size should be less than 128Gb.

In, At, On + Time or Date

In

Use ‘in’ with months, years and periods of time such as decades or centuries:

  • in January
  • in 1978
  • in the twenties

When does the school year begin in your country? – In mine it begins IN September.

Use ‘in’ a period of time in the future to express that an action will occur after that amount of time:

  • in a few weeks
  • in a couple of days

At

Use ‘at’ with an exact time:

  • at six o’clock
  • at 10.30
  • at two p.m.

When do you eat lunch? – I usually eat it AT noon.

On

Use ‘on’ with days of the week:

  • on Monday
  • on Fridays

Use ‘on’ with specific calendar days:

  • on Christmas day
  • on October 22nd

When is your birthday? – Mine is ON October 12.

Important notes

in the morning / afternoon / evening – at night

We say in the morning, afternoon or evening BUT we say ‘at night’.

Should I Use a Singular or Plural Verb with None?

None can take either a singular or plural verb.

When none is followed by a mass noun (a noun that cannot be counted or made plural) it takes a singular verb.

– None of the wine was drunk. (wine = mass noun)

When none means no one or not any, use whichever verb makes more sense.
Consider none as singular when you want to emphasize a single entity in a group, but consider none to be plural when you want to emphasize more than one.

– None of the books is worth reading.
– None of the books are worth reading.

– None of us is going to the banquet.
– None of us are going to the banquet.

– None of the printers is working.
– None of the printers are working.

– None of you is guilty
– None of you are guilty.

If your meaning is ‘none of them’, treat the word as plural; if it is ‘none of it’, treat it as singular.

Wear vs. Put On

To wear: to have something on your body
– She was wearing a diamond necklace with matching earrings.
– Who is that boy wearing a black jacket?

To put on: to move something you ​wear onto ​your ​body
– Take that shirt off and put on a new one. You can’t go out in such an old shirt.
– It’ll be more beautiful if I put on this skirt.

– It’s sunny today so I decided to put on my sunglasses.
– Today, I wear sunglasses because of the sun.

Guide to Citing & Referencing

What is referencing

When writing a piece of academic work, you must acknowledge any sources you have used. You do this by including a ‘citation’ within your text (usually a number or an author’s name) next to the material you have used. This brief citation leads your reader to a full reference to the work, which you include in your list of references at the end of your text. These references should allow anyone reading your work to identify and find the material to which you have referred. You need to be consistent in the way you reference your sources by following an established referencing system and style.

Please download these 2 files for the full guide.

Please download these 2 guides for how to working with references using Microsoft Word 2007 or 2010.

If you want to use IEEE and ACM style with alphabetical (name) sequence then please download this BibWord file, unzip and copy  IEEE_Alphabetical.XSL and ACMNameSeq.XSL to  C:\Program Files (x86)\Microsoft Office\Office12\Bibliography\Style (The directory may be different to this in your machine).

Whenever you update your bibliography, close your document then run BibWordExtender2.exe, click “OK”,  select your Word document, select Bibliography style, click “Extend”, re-open your document, re-select the style in Word.

 

 

Wireless Basic Configuration

Mbps vs. MBps: What’s the Difference?

Mbps means megabits per second. Mb is used for download and upload speed.
MBps stands for megabytes per second. MB is used for file size.
130Mbps = 16.25MBps
144Mbps = 18MBps

Differences between 802.11a, 802.11b, 802.11g and 802.11n

802.11a:
Operates in the 5.15GHz to 5.35GHz radio spectrum.
Speed: Up to 54Mbps (actual throughput is closer to 22Mbps)
Range: 50 feet
Less prone to interference.
More expensive.
Because 802.11b and 802.11a use different radio technologies and portions of the spectrum, they are incompatible with one another.

802.11b:
Operates in the 2.4GHz radio spectrum.
Speed: Up to 11Mbps
Range: 100 feet
Prone to interference (it shares airspace with cell phones, Bluetooth, security radios, and other devices).
Least expensive wireless LAN specification.

802.11g:
Operates in the 2.4GHz radio spectrum.
Speed: Up to 54Mbps
Range: 100 feet
Prone to interference (it shares airspace with cell phones, Bluetooth, security radios, and other devices).

802.11n:
Operates in the 2.4 or 5GHz radio spectrum
Speed: Up to 700Mbs
Range: 50 feet

802.11ac:
802.11ac builds upon previous 802.11 standards, particularly the 802.11n standard, to deliver data rates of 433Mbps per spatial stream, or 1.3Gbps in a three-antenna (three stream) design.
The 802.11ac specification operates only in the 5 GHz frequency range and features support for wider channels (80MHz and 160MHz) and beamforming capabilities by default to help achieve its higher wireless speeds.

Don’t Mix Wireless B/G with N

Wireless N is supposed to be interoperable with Wireless A, B, and G, but it doesn’t always work that way. Some older clients might not be able to connect at all, even when the wireless router or APs are in mixed wireless mode. Then when the older clients can connect, they’ll slow down the network.

Some clients may take a heavy 80 percent cut in their throughput. To prevent this problem, consider forcing the new APs to use only Wireless N, and keep the old router or APs around to support the old clients.

Although connections among users on the Wireless N router or APs with Wireless G users will still be bottlenecked by the old clients, the throughput cuts on a mixed mode Wireless N router or AP can be much worse.

Change your wireless channel

Changing your wireless channel might help increase range and performance, especially if you have neighboring networks set on the same channel or interference from other electronics. It’s best to check channel usage with a program like Vistumbler or inSSIDer, but you can simply try other channels as well to see which one is best.

For 2.4GHz routers (the most common), channel 6 is the default for most routers, so stay away from it. Try channel 1 or 11, the other two other non-overlapping channels. For 5GHz wireless N or AC routers, you shouldn’t have much of an interference issue since it’s less commonly used. But you might try changing to another channel as well.

Use WPA2 security

For the high speeds on wireless N or AC routers you must use WPA2 security with AES encryption. Using WPA or WEP security with TKIP encryption will dramatically reduce bandwidth. Most routers offer a mixed WPA/WPA2 mode, but you should use WPA2 only. Homes should use the personal (PSK) mode, which is the easiest to setup and businesses should use the enterprise (RADIUS) mode which requires an external authentication server.

Most devices you have should support WPA2 security, but if you have some that don’t consider using an older router with a newer one as mention in the previous section.

Short Guard Interval

The guard interval is the space between symbols (characters) being transmitted.  This is often confused with the space between packets, which is the interframe space (IFS).  The guard interval is there to eliminate intersymbol interference, which is referred to as ISI.  ISI happens when echos or reflections from one symbol interfere with another.  Adding time between symbol transmission allows these echos and reflections to settle in before the next symbol is transmitted.  In normal 802.11 operation, the guard interval is 800 ns.

With 802.11n, short guard intervals are possible.   The short guard interval time is 400ns, or half of what it used to be.  Shorter wait time (guard interval) between symbols increases throughput.  However, if it’s too short, the amount of ISI will increase, and throughput will decrease.  On the other hand, if the guard interval is too long, there is increased overhead due to the additional idle time.

If you are using 802.11n or 802.11ac only, you can enable short GI. In another word, when using mixed mode, please disable the short GI, which may cause issues.
When intending to improve the throughput, enable short GI can improve the throughput about 10%.

RTS/CTS Threshold

As an optional feature, the 802.11 standard includes the RTS/CTS (Request to Send/Clear to Send) function to control station access to the medium.
For access points, you enable RTS/CTS by setting a specific packet size threshold (0 — 2347 bytes) in the user configuration interface.
If the packet that the access point is transmitting is larger than the threshold, it will initiate the RTS/CTS function.
If the packet size is equal to or less than the threshold, the access point will not kick off RTS/CTS.
Most vendors recommend using a threshold of around 500.
The use of 2347 bytes effectively disables RTS/CTS for the access point.

Source: https://www.quora.com, http://www.ciscopress.com

Have Something Done

Take a look at these two sentences. What is the difference in meaning between them?

‘I cut my hair.’
‘I have my hair cut.’

‘I cut my hair’ means that I do it myself.
‘I have my hair cut means someone cuts my hair for me (in this case it’s probably a hairdresser).

We use have something done to mean another person does a service for us.

The grammar for this is pretty simple:

Have + object + past participle

Let’s take a look at a few more examples:

‘We didn’t want to cook so we had a pizza delivered.’
‘I had my car washed at that new place by the station.’
‘I had my watch fixed.’

We can also use ‘get’ instead of ‘had’ and the meaning stays the same. The sentences above now become:

‘We didn’t want to cook so we got a pizza delivered.’
‘I got my car washed at that new place by the station.’
‘I got my watch fixed.’

Difference Between Core i3 and i5 and i7 and Core 2 Duo

Generally speaking the current generation of Core i3/i5/i7 have about 20% more processing power than their Core 2 Duo counterparts.

Core i3:
– Dual Core CPU
– Hyper Threading

Core i5:
– Dual Core CPU
– Slightly higher clock speeds than core i3
– Hyper Threading
– Turbo Boost (it’s like an automatic overclock if the CPU is not too hot)

Core i7:
– Dual Core CPU (models ending with M)
– Quad Core CPU (models ending with QM)
– Higher clock-speed than the Core i5
– Hyper Threading
– Turbo Boost
– Virtualization (you can run multiple operating systems at the same time)
– Has circuitry that allows for easier and more secure remote access for corporate IT departments to trouble issues in a business environment.
– AE5 New Instruction set (No idea what this is)

Source:  http://www.tomsguide.com/

Topic 17 – Calculus

Why do I need to learn about calculus?

Calculus is a fundamental tool for understanding modern theories and techniques to create software such as artificial intelligence, machine learning, deep learning, data mining, security, digital imagine processing and natural language processing.

What can I do after finishing learning about calculus?

You will then be prepared to be able to learn modern theories and techniques to create security, data mining, image processing or natural language processing software.

What should I do now?

Please watch this MIT 18.01 – Single Variable Calculus, Fall 2007 course (Lecture Notes).  When you watch this course please refer to this George F. Simmons (1996). Calculus With Analytic Geometry. McGraw-Hill book when you have difficulties with understanding some lectures.

Alternatively, you can read
– this George F. Simmons (1996). Calculus With Analytic Geometry. McGraw-Hill book or
– this C. Henry Edwards David E. Penney (2008). Calculus – Early Transcendentals. Pearson book or
– this George B. Thomas et al. (2018). Thomas’ Calculus: Early Transcendentals. Pearson Education book or
– this James Stewart et al. (2020). Calculus: Early Transcendentals. Cengage Learning book.

After that please watch this MIT 18.02 – Multivariable Calculus, Fall 2007 course (Lecture Notes). You will need some Linear Algebra knowledge (specifically Inverse Matrix and Determinant) to understand Multivariable Calculus.

After that please watch this Highlights of Calculus course to review many core concepts of Calculus.

After that please watch this MIT 18.03 – Differential Equations, Spring 2006 course videos (Readings). When you watch this course videos please refer to this C. Henry Edwards and David E. Penney (2013). Elementary Differential Equations with Boundary Value Problems. Pearson Education book when you have difficulties with understanding some lectures.

What is the difference between calculus and analysis?

Calculus means a method of calculation. Calculus is about differentiation and integration.

Real analysis includes calculus, and other topics that may not be of interest to engineers but of interest to pure mathematicians such as measure theory, lebesgue integral, topology, functional analysis, complex analysis, PDE, ODE, proofs of theorems.

What does early transcendentals mean?

Transcendentals in this context refers to functions like the exponential, logarithmic, and trigonometric functions.

The early transcendentals approach means that the book introduces polynomial, rational functions, exponential, logarithmic, and trigonometric functions at the beginning, then use them as examples when developing differential calculus. This approach is good for students who do not need to take much rigorous math.

The classical approach is the late transcendentals. It means that the book develops differential calculus using only polynomials and rational functions as examples, then introduces the other functions afterwards. This approach is good for students who need to understand more rigorous definitions of the transcendental functions.

Single Variable Calculus Terminology Review:

  • Slope.
  • Derivative.
  • Rate of Change.
  • Limit.
  • Continuity.
  • Chain Rule.
  • Implicit Differentiation.
  • Linear Approximations.
  • Quadratic Approximations.
  • Critical Point.
  • Newton’s Method.
  • Mean Value Theorem.
  • Differentials.
  • Antiderivatives.
  • Differential Equations.
  • Separation of Variables.
  • First Fundamental Theorem of Calculus.
  • Indeterminate Forms.
  • L’Hospital’s Rule.
  • Improper Integrals.
  • Infinite Series.
  • Taylor’s Series.
  • Taylor’s Formula.

Multivariable Calculus Terminology Review:

  • Vectors.
  • Dot Product.
  • Cross Product.
  • Inverse Matrix.
  • Determinant.
  • Equations of Planes: ax + by + cz = d
  • Parametric Equations = as trajectory of a moving point.
  • Velocity Vector.
  • Acceleration Vector.
  • Level Curve.
  • Tangent Plane.
  • Saddle Point.
  • Functions of Several Variables.
  • Partial Derivatives.
  • Second Derivatives.
  • Second Derivative Test.
  • Differentials.
  • Gradients.
  • Directional Derivatives.
  • Lagrange Multipliers.
  • Power Series.
  • Geometric Series.
  • Euler’s Formula.

Differential Equation Terminology Review:

  • Isocline (equal slope): a line which joins neighboring points with the same gradient.
  • Direction Fields.
  • Integral Curve: The graph of a particular solution of a differential equation.
  • IVP: Initial Value Problem.
  • Euler’s Numerical Method.
  • Linear First Order ODE Standard Form: y′ + p(x)y = q(x)
  • Integrating Factor or Euler Multiplier: The method is based on (ux)’ = ux’ + u’x.
  • Substitution: to change variables to end up with a simpler equation to solve.
  • Bernoulli equations: y′ + p(x)y = q(x)yⁿ.
  • Homogeneous equations: y′ = F (y/x)
  • Autonomous equations: dx/dt = f(x). If we think of as time, the naming comes from the fact that the equation is independent of time.

After finishing learning about calculus please click Topic 18 – Linear Algebra to continue.