Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Over view of Technologies
1. Overview of IT and Digital
Technologies
C h r i s M i t c h e l l
c m p r o j e c t m a n a g e r @ g m a i l . c o m
Author: Chris Mitchell
Web Development - Mobile Apps – SaaS – Software tools – .NET –
Budgeting
Please note this is a live document and is updated on a going basis (it is still in its early stages
and needs further sections adding. If you would like to have any sections added or amended
please contact me via email.)
2. Table of Contents:
Web Development: Common used terms, programming languages and their meanings...........................................................................................................................................2
High level overview of how component parts of a website interact:A story about a customer ordering in a restaurant...............................................................................3
Web Development terms:.................................................................................................................................................................................................................................................................3
Native Apps and Web Apps.............................................................................................................................................................................................................................................................5
Web apps................................................................................................................................................................................................................................................................................................5
Web advantages..............................................................................................................................................................................................................................................................................5
Native apps...........................................................................................................................................................................................................................................................................................6
Native advantages..........................................................................................................................................................................................................................................................................6
What Is 'SaaS' (Software as a Service)?......................................................................................................................................................................................................................................8
What is .NET?...................................................................................................................................................................................................................................................................................10
Languages:.....................................................................................................................................................................................................................................................................................10
Cross Platform:.............................................................................................................................................................................................................................................................................10
Budgeting: 4 Steps to help keep you within Budget.............................................................................................................................................................................................................11
3. Web Development: Common used terms, programming languages and their meanings.
O HTML - Hypertext mark-up language.
O CSS - cascading style sheets. The look and formatting of a document written in mark-up language.
O API -Application programming interface. That is an interface between software components and how they speak to each other.
O Java - General purpose computer programming language.
O PHP - hypertext pre-processor.
O MySQL - relational data base management system.
O JQuery - JavaScript library
O Drupal - This is a content management system. (Abit like Wordpress).
O Wordpress – A content management system (Abit like Drupal).
O WAF – WebApplication Firewall
4. High level overview of how component parts of a website interact:A story about a customerordering in a restaurant.
O Imagine the customer is the client. HTMLis the structure of the menu and CSS is how the parts are designed and laid out. (Another way to look at it
is HTML is the menu and CSS is the decoration).
O The waiter is PHP. So the client makes an order from the menu. And the waiter (PHP) takes the order back to the kitchen. The kitchen / chef is
MySQL (That database). MySQLmakes the order and PHP returns it to the customer.
Web Developmentterms:
This section was written by Justin Emond and Chris Steins. It is from a great book they wrote called ‘Pro Web Project Management.’ These terms are used in
web development but can also be used in other areas of work.
O A design mock-up is an image that shows exactly how a typical page will look. Best used for public web design projects.
O A wireframe is a non-styled mock-up of how the major elements of a web page will be arranged and positioned in relation to each other. Good for
most projects before design mock-ups or HTML mock-ups are created.
O A HTML mock-up is a clickable set of screens that work in a browser and look exactly how the application will look. Best used for customer software
development.
O A technical specification is a plain-language document that describes in detail what every part of every page will do and typically contains screen
shots of the HTML mock-ups. Best for larger custom software projects.
5. For a typical public design web project, the preparation process would be:
1. Collect requirements.
2. Prepare wireframes.
3. Collect feedback and refine.
4. Prepare design mock-ups.
For a typical midsize custom software project, the process would be:
1. Collect requirements.
2. Prepare wireframes
3. Collect feedback and refine.
4. Prepare HTML mock-ups.
For a typical larger custom software project, the process would be:
1. Collect requirements
2. Prepare wireframes (optional)
3. Collect Feedback and refine
4. Prepare HTML mock-ups
5. Collect feedback and refine
6. Prepare technical specification
7. Prepare database schema (see “Creating a Database” later in this chapter)
6. Native Apps and WebApps
(This section was written by Casey Frechette)
O 1. Native apps run alongside the browser. They’re built with tools specific to the device’s platform (usually Android or iOS), give a publisher
prominent placement on a user’s home screen,and benefit from a raft of sophisticated features.
O 2. Web apps run within the browser. They’re built with a collection of advanced Web technologies — but, like native apps, emphasize utility over
content. Though lacking the power of their native counterparts, Web apps can be equally capable for users and may be a more cost-effective
alternative for publishers.
Web apps
O AWeb app runs in the browser. Technically it’s a Web page, but in practice it looks and works like an app. It’s designed to allow users to accomplish
something.
O Web apps rely on the same technological tools that power the rest of the Web,and make use of some of the newest and most-powerful capabilities of
those tools. HTML5 represents and structures content in a Web app, CSS3 provides a design for the app, and JavaScript adds functionality and can
serve as a bridge to the device’s hardware.
O Combining these tools allows for exciting possibilities, including geo-location, multi-touch, video and audio, device orientation detection, and offline
storage. Not long ago, these capabilities were exclusive to native apps. But now the Web is catching up.
Web advantages
O Web apps offer three key advantages:
O 1. Because the Web’s technologies and underlying standards are open, changing the tools that underpin it can be slow and messy. The end result,
though, is a platform that works consistently regardless of what device is used. That lets publishers build something once and know it will work on
many devices, and means only one product has to be maintained and updated.
7. O 2. Web apps are easy to integrate with content elsewhere on the Web, including other Web apps, sites and the APIs provided by various Web-based
services.
O 3. The skills required to build them are far more common amongst developers and designers.
Native apps
O Native apps are built with a mix of platform-specific technologies. The Android and iOS ecosystems command the lion’s share of the marketplace –
about 90 per cent of all mobile devices (phone and tablet) run one of these two platforms. Windows Phone is a distant third with about 3 percent
market share, and a hodgepodge of other platforms round things out.
O Most app developers are concerned only with Android and iOS, which simplifies things somewhat for publishers. Unfortunately, these platforms run
on completely different technologies.
O Android programmers mainly build apps with Java,making occasional use of Python. Underlying code libraries – the building blocks of the Android
platform – rely on a combination of C and C++. Each is a separate language and, in the mobile world, all are specific to the Android platform.
O iOS developers, on the other hand, use the Objective-C programming language, the Cocoa Touch framework and Xcode, a collection of programming
tools.
O Given the range of technologies involved in development and the clear division between the Android and iOS camps,native apps present a workflow
challenge for publishers: While it may be possible to design an app once, the full development cycle has to be completed at least twice, and even then
10 per cent of potential mobile users are left out.
O Developing native apps in sequence is a common workaround, but publishers must decide which platform comes first. Android is the clear
frontrunner with about 52 per cent of the overall mobile market, but iOS users spend much more money on paid apps. So publishers must decide what
goal to prioritize: a larger audience or more revenue.
Native advantages
O Five key advantages set native apps apart from their Web counterparts:
8. O 1. They can deliver a better user experience. Web apps always include elements from the browser, such as the address bar and other related tools. On
small screens,that’s precious space that could be devoted to app-specific controls. Certain user interactions, such as swiping a page to move or
change content, can also be more fluid and consistent in a native app.
O 2. They integrate more closely with the device’s hardware. This may change as Web technologies progress and become more capable, but for now
native apps have the upper hand. Accessing the likes of Bluetooth, USB, telephony and GPS remains challenging — if not impossible — with Web
technologies, while other hardware (including cameras and videos) can only be accessed in a limited way.
O 3. Native apps allow for close integration with the operating system and other apps. This presents interesting possibilities in which one app can “talk”
to another, exchanging information or working in tandem to perform a task for the user.
O 4. Web apps stop running when the browser closes, but native apps can run continuously, even when they’re not active. This allows user alerts and
notifications.
O 5. Native apps have the potential to run faster than Web apps. This is especially true for graphics-intensive apps such as games.
9. What Is 'SaaS'(Software as a Service)?
(This section was written by Paul Gil)
Answer: 'SaaS', or 'Software as a Service', describes when users 'rent' or borrowonline software instead ofactually purchasing and installing it on
their own computers. It is the same situation as people using Gmail or Yahoo mail services, except that SaaS goes much further. SaaS is the foundational
idea behind centralized computing: entire businesses and thousands of employees will run their computer tools as online rented products. All of the processing
work and file saving will be done on the Internet, with users accessing their tools and files using a web browser.
SaaS, when combined with PaaS (hardware Platform as a Service),forms what we call 'Cloud Computing'.
SaaS and PaaS describe the business model of users logging into a centralized hub to access their software products. Users open their files and software only
while online, using only their web browser and passwords. It is a resurgence of the 1950's and 1960's mainframe model, but tailored to web browsers and
Internet standards.
SaaS/Cloud Example 1: instead of selling you a copy of Microsoft Word for $300, a cloud computing model would "rent" word processing software to you
through the Internet for perhaps 5 dollars a month. You would not install any special software,nor would you be confined to your home machine to use this
rented online product. You simply use your modern web browser to login from any web-enabled computer, and you can access your word processing
documents in the same way that you would access your Gmail.
SaaS/Cloud Example 2: your small car sales business would not spend thousands of dollars on a sales database. Instead,the company owners would "rent"
access to a sophisticated online sales database,and all the car salesmen would access that information through their web-enabled computers or handhelds.
SaaS/Cloud Example 3: you decide to start a health club in your hometown, and need computer tools for your receptionist, financial controller, 4
salespeople, 2 membership coordinators, and 3 personal trainers. But you do not want the headaches nor the cost of paying part-time IT staff to build and
support those computer tools. Instead, you give all your health club staff access to the cloud of the Internet, and rent their office software online, which will be
stored and supported somewhere in Arizona. You will not need any regular IT support staff then; you will just need occasional contract support to ensure that
your hardware is maintained.
The Benefits ofSaaS/Cloud Computing:
The primary benefit of Software as a Service is reduced cost for everyone involved. Software vendors do not have to spend thousands of hours supporting
users over the phone... they would simply maintain and repair a single central copy of the product online. Conversely, users wouldn't have to shell out the
10. large up-front costs of fully purchasing word processing, spreadsheet,or other end user products. Users would instead pay nominal rental fees to access the
large cntral copy.
The Downsides ofSaaS/Cloud Computing:
The risk of Software as a Service and cloud computing is that the users must place a high level of trust into the online software vendors that they will not
disrupt the service. In a way, the software vendor holds its customers "hostage" because all of their documentation and productivity is now in the vendor's
hands. Security and protection of the file privacy becomes even more necessary,as the massive Internet is now part of the business network.
When a 600-employee business switches to cloud computing, they must choose their software vendor carefully. There will be dramatically-reduced
administration cost to use cloud computing software. But there will be an increase in the risks of service disruption, connectivity, and online security.
11. What is .NET?
(Info from Microsoft)
.NET is a free, cross-platform, open source developer platform for building many different types of applications. With .NET, you can use
multiple languages, editors, and libraries to build for web, mobile, desktop, gaming, and IoT.
Languages:
You can write .NET apps in C#, F#, or Visual Basic.
C# is a simple, modern, object-oriented, and type-safe programming language.
F# is a cross-platform, open-source, functional programming language for .NET. It also includes object-oriented and imperative
programming.
Visual Basic is an approachable language with a simple syntax for building type-safe, object-oriented apps
Cross Platform:
Whether you're working in C#, F#, or Visual Basic, your code will run natively on any compatible OS. Different .NET implementations handle
the heavy lifting for you:
.NET Core is a cross-platform .NET implementation for websites, servers, and console apps on Windows, Linux, and macOS.
.NET Framework supports websites, services, desktop apps, and more on Windows.
Xamarin/Mono is a .NET implementation for running apps on all the major mobile operating systems.
One consistentAPI:
.NET Standard is a base set of APIs that are common to all .NET implementations.
Each implementation can also expose additional APIs that are specific to the operating systems it runs on. For example, .NET Framework is a Windows-only
.NET implementation that includes APIs for accessing the Windows Registry.
12. Budgeting: 4 Steps to help keepyou within Budget
Written by Jason Westland
1. Continually forecast the budget. Aproject run without frequent budget management and reforecasting will likely be headed for failure. Why? Because frequent
budget oversight prevents the budget from getting too far out of hand. A 10 per cent budget overrun is far easier to correct than a 50 per cent overrun. Your
chances of keeping the project on track with frequent review of the budget plan is far greater than if you forecast it once and forget about it.
2. Regularly forecast resource usage. Just as the budget needs to be constantly revisited to keep it on track, you need to do the same for resource usage,since
the people working on a project contribute to its cost. Project managers should review the number of people currently working on a project and the project's
future resource needs on a weekly basis . Doing so will ensure that you're fully utilizing the resources you have and that you have the right resources ready for
the rest of the project. Regularly revisiting the resource forecast will help keep your project budget on track.
Similarto this Article
3. Keep the team informed. Always keep the project team informed of the project budget forecast. An informed team is an empowered team that takes
ownership of the project. By keeping the team informed of the budget status,they will be more likely to watch their project charges and far less likely to
charge extra 'grey area' hours to your project (those are the hours that they know they worked by aren't sure what they were working on.)
4. Manage scope meticulously. Scope creep is one of the leading causes of project overruns. As unplanned work finds its way into your project, billable hours
mount and the project budget can get out of control. Project managers must carefully manage scope by creating change orders for work that isn't covered by
the project's initial requirements. Change orders authorize additional funding for the project to cover the cost of extra work, and thus keep the project to its
new budget.
The project budget must be a living part of projects—something project managers review with their teams and their stakeholders on a regular basis. Project
managers who carefully watch budgets throughout the lives of their projects will keep stakeholders and management happy and thus experience greater
project and career success.