Welcome to the Brixton Library Technology Initiative (Coding for Adults) [email protected] [email protected] January 23 rd 2016 Week 2 Intro
Welcome to the Brixton Library Technology Initiative
(Coding for Adults)
January 23rd 2016
Week 2 Intro
IT• This week you will learn about a different way of programming and
designing applications.
• It’s called event driven programming.
• Used in Windows, Linux and MacOS – anywhere there is a GUI and other types of reactive applications like trading systems that get prices over the internet. Small fast micro changes in state keep a system in sync with reality.
• Different from batch which is the scheduled processing of large amounts of data like a payroll run or a mail shot. This is a static view or snapshot of state at some particular point in time.
• How does that fit into the bigger picture of IT.
Roles in IT• BA – Business Analyst. User Acceptance Tester.• Data Scientist.
• Project manager, team leader, delivery managertesting manager.
• Tester.
• UI Developer.• Middle tier developer. Performance specialist.• DBA – Database Administrator.
• Dev Ops – Developer / operational support.• Support.• Comms / Infrastructural Specialist.
• Security.
Analysis
Management
Quality Assurance
Developer
‘DEV’
Operations / support
Security
Systems Architect
Tools of the trade
• IDE – Integrated Development Environment.• Frameworks, libraries, toolkits, Operating Systems• Standards and protocols - Xml, TCPiP, http.• Blogs, forums, manuals, tutorials.• Source code repository – git, subversion, CVS• Collaborative development.• Dependency Management - Nexus, Maven, Sbt• Development Methodologies
Continuous Integration.Agile / Scrum.Peer programming / review
We will cover these in later weeks.
Types and Structure Of Modern Applications
• Different magnitude of data – tera and peta bytes.• Different timescales – batch, intraday, low latency.• Different levels of consistency – transactional (all or nothing),
eventually consistent.
• Tiered or layered for flexibility and deployment.
• UI – The user interface or presentation layer.• Middle Tier – business logic / access logic.• Backend – data storage / replication.
• It is the same whether it is an internet application the size of Google or an app on your phone.
• Google, Facebook, BBC Website.
Tiered Architecture
Mobile App Tiered Architecture
Mobile App has presentation and some of middle tier on the device.
Typical Website
UI Design And Development• Not just building screens.
• Ergonomics.
• Engaging / interactive representation of data.
• ‘real time’ data streaming.
• Multi media integration.
• Event driven programming model.
Event Driven ProgramGraphical applications are made up from ‘widgets’, canvases and frames .
Widgets:Buttons, Checkboxes, Textboxes, Images.
Drag and drop.
Your application runs within a graphical windowing system ‘Window Manager’ which itself runs in an OS.
Windows, Linux, MacOS
Widgets come from libraries or frameworks.
OS / Window Manager Specific
Windowing SystemTypical elements of a windowing system
Typical Window Manager Architecture
Designing a UIHow does it all fit together ?
How do you write programs to exist in this environment?
You design the layout of your windows.
Think about business flow of attention of the user.
Place your widgets on the ‘screen’.
Event Driven ProgramYou attach a ‘handler’ to a widget (Button)
The OS sends mouse, keyboard and all other events to the application’s event queue.
It passes them to your handler.
They are processed in FIFOor some prioritised order.
Your code does stuff using data from the event.
Glade - A Typical UI Design Tool
Creating a GUI using PyGTK and GladeCreating a GUI using PyGTK and Glade Article by Mark Mruss, originally posted on www.learningpython.comhttp://tinyurl.com/5aw4md
IDE – Integrated Development Environment
• Tool for building, testing and collaboratively developing software.
• Usually language or framework specific.• More popular languages have better IDEs or
more choice.• PyCharm is a very good Python IDE.• All have same basic layout and features. • Demo PyCharm.