2018-10-05 15:00:00 |
Mark Dawson |
Lisp for Python programmers
Show abstract An introduction to one of the oldest languages still in common use, and a comparison to the features of the popular Python lanaguage.
The talk will consist of an introduction to the syntax of Lisp, in a simple accessible format.
Hide abstract
|
2018-09-28 15:00:00 |
Chennakesava Kadapa |
Data visualisation with VTK and Paraview
|
2018-09-14 15:00:00 |
James Stovold |
Whirlwind tour of R
|
2018-08-17 15:00:00 |
Chenna Kadapa |
A short introduction to PETSc
Show abstract In this talk, we will have a short introduction to PETSc. We will look
at some important data structures and utilities in PETSc that are very
useful for computational scientists interested in developing codes for
HPC architectures. We will look at some important aspects of PETSc that
makes it so powerful and flexible.
Hide abstract
|
2018-08-10 15:00:00 |
Ed Bennett |
Beyond MPI_Send: What I learned implementing MPI for halo exchange
Show abstract In this talk, Ed will walk through the process of implementing MPI into a
piece of Lattice Field Theory software written in Fortran. Along the way,
various parts of the MPI standard not typically visited during tutorials
will be described. Some performance data will also be shown.
Hide abstract
|
2018-08-03 15:00:00 |
Michele Mesiti |
Profiling with Intel Tools
Show abstract In this week TechChat we are having a look at VTune and ITAC, the notorious performance
analysis tools by Intel, using the profiling and optimisation of a Lattice Field Theory
code as an example.
Hide abstract
|
2018-07-27 15:00:00 |
Ed Bennett |
What even is the module command?
Show abstract The module command is frequently provided on HPC systems to give access
to a wide array of often mutually incompatible software, but sometimes it
has limitations which seem restrictive or quirky. In this Tech Chat we will
explore the structure and mechanisms of the underlying implementation of
the module command to find the origin of these limitations.
Hide abstract
|
2018-07-20 15:00:00 |
Michele Mesiti |
Examples of GPU programming
Show abstract In this TechChat, Michele will show some examples of GPU programming, making use of CUDA, OpenCL, and OpenACC.
He will also show an example of a very simple OpenGL application.
Hide abstract
|
2018-07-13 15:00:00 |
Jarno Rantaharju |
Introduction to GPUs: what it is and what you can do with it
Show abstract Graphical Processing Units (GPU) are frequently used to solve computationally intensive problems.
They are well suited for computationally intensive problems, such as machine learning, but the power
comes with limitations. I will give an overview of the history and the technical details of modern GPUs
and contrast them with other computing platforms.
Hide abstract
|
2018-07-06 15:00:00 |
Mark Dawson |
What programming paradigms?
Show abstract We introduce and define a number of different programming paradigms,
and briefly discuss some possible merits and drawbacks of each. An
extended group discussion will give an opportunity to specify options,
preferences and experiences with various paradigms.
Hide abstract
|
2018-06-29 15:00:00 |
Mark Dawson |
Git: Demystified
Show abstract Ever wondered how git really works? Where and how does it store it's data and what exactly is being stored? Can we peek into the database at
files, commits, branches and directory trees? What information is git storing and how? How is this different from other version control systems?
We take a peek under the hood to see what and how information is being stored and manipulated in our day-to-day git usage, and how this can leads
to being more productive with git.
Hide abstract
|
2018-06-22 15:00:00 |
Jarno Rantaharju |
Open Source Licenses
Show abstract Which open source license should you choose when you publish your scientific code?
There are several public software licenses giving slightly different permissions and
imposing slightly different restrictions to using your code. I will introduce the
most common options, from a public domain declaration to no license at all, and outline
their features and problems for scientific code.
Hide abstract
|
2018-06-15 15:00:00 |
Ed Bennett |
Staying sane in Python with virtual environments
Show abstract One of Python's most attractive features and the source of much of its power is its extensive library of
third-party modules and libraries. However, when too many libraries are installed, it becomes difficult to
manage keeping compatible versions, and to move applications between machines. In this Tech Chat, Ed will
introduce some of the tooling available to make these experiences easier, including conda, virtualenv, and
pipenv.
Hide abstract
|
2018-06-08 15:00:00 |
Michele Mesiti |
Structural Design Patterns
Show abstract Using well known patterns in designing software can help greatly in developing code that is easier to maintain,
to extend and to understand for other people. In this Tech Chat I will discuss some of the most common ones in
the category of "Structural Patterns" and compare them.
Hide abstract
|
2018-06-01 15:00:00 |
Jonas Rylund Glesaaen |
Why are there no good build systems? An introduction to Bazel
Show abstract A good build system is essential for any large scale project. If set up properly it makes it
easy to compile often, which in turn incentivises active debugging, frequent unit testing, and making sure all your git commits compile.
My question for the talk is this: If they are such important tools, and have been around for more than 50 years, why are there no good ones?
In the talk I will highlight some of the things that are important to me and go through some scenarios I have encountered recently. I will
also talk about the systems I have personally used, systems I have researched, and most importantly, about Bazel, the newest tool in my toolbox and
how it solves some of my grievances (and not others).
Hide abstract
|
2018-05-25 15:00:00 |
Michele Mesiti |
Using C from Python: the ctypes library
Show abstract Sometimes Python is too slow, and numpy has just not got the feature you need.
In this talk I'll show how to use Python ctypes to import your functions written
in C. Alternatives will also be reviewed.
Hide abstract
|
2018-05-18 15:00:00 |
Jarno Rantaharju |
Benchmarking C compilers
Show abstract The compiler used to turn human readable code into a machine readable object file
naturally has an effect on performance. We usually remember to tune compiler flags
to fit the application, but the different compiler versions can behave differently.
I study the performance of a well tuned HPC application when compiled with different
versions of gcc, clang and the Intel compiler.
Hide abstract
|
2018-05-11 15:00:00 |
Mark Dawson |
To MVC or not to MVC?
Show abstract First introduced in the 1970s, the Model-View-Controller and its variations are arguably
the the most popular and long-lived design patterns for building modular, maintainable
and extensible interactive applications for desktop, web and mobile. We introduce the
fundamental concepts necessary to start using the pattern, and outline its strengths
and weaknesses. Frameworks which leverage concepts from MVC, such as Qt/PyQt and Rails,
will be introduced and the advantages and limitations of MVC design discussed.
Hide abstract
|
2018-05-04 15:00:00 |
Ed Bennett |
Spellcheck for Code, or: How I learned to stop worrying and love the linter
Show abstract Background compilation, incremental compilation, on-the-fly syntax checking,
or "red squiggles in your editor" have been available for almost two decades,
but are still sadly underused by many developers, in particular those who do
not use an IDE where they are enabled by default. In this Tech Chat, I will
briefly outline the history of the red squiggle, show how you can get them in
your editor, and try to convince you that it is something you want to do.
Hide abstract
|
2018-04-27 15:00:00 |
Mark Dawson |
Emacs for vim users
Show abstract At this TechChat, we'll take a look at spacemacs, a popular new
configuration for the emacs editor. This provides, amongst other things,
a near-identical replication of vim within emacs. Seasoned vim users can
access unparalleled configurability and extendability of emacs, without
the need to learn new keybindings for editing. The configuration is
designed to make emacs easily discoverable and make common configurations
simple. Vanilla emacs users can have the convenience of simple modular
configuration, whilst taking advantage of a powerful modular configuration
and switching between vim and emacs style with a single keystroke.
Hide abstract
|
2018-04-20 15:00:00 |
Sean Walton |
Developing Augmented Reality Applications for the HoloLens
Show abstract The Microsoft HoloLens is an self contained augmented reality headset and computer.
The College of Science and Swansea Academy of Learning and Teaching have invested in
a number of devices to explore potential applications to teaching and learning. In
this talk I will be sharing my experiences developing prototypes for the HoloLens.
I'll focus on the capabilities of the device and the challenges of creating augmented
reality experiences in environments you've never seen.
Hide abstract
|
2018-04-13 15:00:00 |
Jarno Rantaharju |
Introduction to Neural Networks
Show abstract Continuing on the theme of Machine Learning, I will give a brief
technical introduction to Artificial Neural Networks and Deep Learning.
Starting from the simple artificial neuron, I will describe the general
construction of classifiers, generative models and recurrent neural
networks, as well as training the networks using Gradient Descent
Algorithms.
Hide abstract
|
2018-04-06 15:00:00 |
Michele Mesiti |
Aspects of Machine Learning
Show abstract In this Tech Chat I will discuss foundations and problems in Machine Learning in its three main flavours
(supervised, unsupervised and "reinforcement"), in the hope of giving the context for future Tech Chats
on more specific areas and techniques. I will also try to give a historical perspective and some examples in
order to better illustrate some basic principles, with the aim of sparking discussion and experience sharing
in the audience.
Hide abstract
|
2018-03-23 15:00:00 |
Ed Bennett |
Structuring Large Python Projects
Show abstract What do you do when your Python projects become too large to manage
by simply sticking a bunch of Python files in a folder? How can you
nest packages to best make your code maintainable and reusable?
In this talk I will discuss some best practices and strategies to
structuring large projects, drawing from case studies in the Python
standard library.
Hide abstract
|
2018-03-16 15:00:00 |
Tadas Nikonovas |
strace for developers
Show abstract The talk will showcase a powerful but little known Linux utility,
strace. The command belongs to a special group of tools which operate
on other commands or executables. It reports system calls made and
signals received by the application under scrutiny and is useful
for debugging, trouble shooting, or analysing activity of a program
without available source code. The presentation will focus on a
particular use case for exploiting strace for tracing I/O activity.
Basic usage examples of strace will be shown, demonstrating how to
make sense of the output given by the command.
Hide abstract
|
2018-03-09 15:00:00 |
Colin Sauze |
Continuous Integration with Jenkins
Show abstract I will be talking about Jenkins, a continuous integration
system with a user friendly web interface. Jenkins automates compiling,
testing and deploying software and can be a very useful tool for
improving code quality and preventing bugs from reaching production
systems. I will show how I used Jenkins to build and test a web portal
for experiment management at the National Plant Phenomics Centre in
Aberystwyth. I would also be asking the question of how appropriate
continuous integration is in research software where developers often
work alone and the number of users is small.
Hide abstract
|
2018-02-23 15:00:00 |
Jonas Glesaaen |
Introduction to template metaprogramming
Show abstract In this talk I will give an introduction to template metaprogramming in C++,
focusing on what it is good for and which kind of issues one normally would
choose this particular tool from the C++ toolbox to solve.
We will go through the list of concepts and the terminology commonly in use
when writing metaprograms, and the talk will feature plenty of example, some
of which we will analyse in depth to understand what the compiler is doing.
We will also look at libraries to facilitate working with TMP, more
specifically using boost::mpl. Finally, if time permits we will have
a look at how these ideas can be used to write what is known as "expression
templates", which is a variant of lazy evaluation at compile time.
Hide abstract
|
2018-02-16 15:00:00 |
Mark Dawson |
Meltdown in a nutshell
Show abstract The talk will introduce and motivate several design features of current chips and operating system features.
These include an accessible introduction to features of many modern processing units, such as: CPU caches,
pipelining, superscalarity, branch prediction and speculative execution. Only a very basic familiarity with
common programming concepts is assumed. The interplay between these chip design choices which resulted in the recent,
highly-publicised Meltdown vulnerability in almost all recent Intel chips will be explained at high level, without assuming
knowledge of any specific language.
Hide abstract
|
2018-02-09 15:00:00 |
Jonas Glesaaen |
Introduction to C++ templates
Show abstract In this talk I will give a thorough introduction to templates in C++.
This will include topics such as: what a template is; what kind of
templates are there; what are the rules for template lookup; when are
templates instantiated, and how can you affect this; what is a template
specialisation, and what are the restrictions. If time permits we will
also talk about the "recently" introduced concept of variadic templates
and how these can be used to replace C's infamous varargs.
The talk is intended to both introduce the rules of templates to the
audience, push the "all errors at compile time"-mindset, as well as
build a solid foundation on which we will base the next talk in the
series, which is on template metaprogramming.
Hide abstract
|
2018-01-19 15:00:00 |
Jarno Rantaharju |
Vectorisation for modern architectures with AVX512
|
2018-01-12 15:00:00 |
Michele Mesiti |
Using METAQ for task bundling
|