My name is Pavani Mothe, I am a senior at Worcester State University and will be graduating this May. I will be using this blog to tack the progress for my Software Development Capstone.

From the blog CS@worcester – pavanimothe by pavanimothe and used with permission of the author. All other rights reserved by the author.

Posted in CS@Worcester | Comments Off on Hello!!

Start of New Semester

I am starting my Software Dev. Capstone this semester and will try to keep this blog up to date with all the work I contribute to the OpenMRS project we will be working on.

From the blog cs-wsu – mmoussa7wsu by mmoussa7 and used with permission of the author. All other rights reserved by the author.

Posted in cs-wsu | Comments Off on Start of New Semester

The return

I suppose it’s time I wipe the dust off this inactive blog and bring it back as I start working on a new project. As far as I know, the project is called OpenMRS. More details will come as I find out more.

For those that don’t know me, hello. I am John Donas, Computer Science senior at Worcester State University. I transferred to this school in 2013 after graduating with an Associates at Quinsigamond Community College. My experience in the field includes a project in QCC called AutoeXplorer, an internet browser designed with the intent of allowing users to record their browsing and play it back at any time.

OpenMRS seems interesting based on what I’ve seen of it. I hope to work more with it as this semester continues.

From the blog cs-wsu – jdongamer by jd22292 and used with permission of the author. All other rights reserved by the author.

Posted in cs-wsu, openMRS, reintroduction | Comments Off on The return

Worcester State University

I currently am attending Worcester State University and am enrolled in the Software Development Capstone course where we get to take a look at OpenMRS and get a feel for what the real world for development is like. We each get a small group, similar to any work environment, and work together to accomplish tasks that help the OpenMRS project. I am looking forward to the challenges ahead!

From the blog CS@worcester – Greg Tzikas by Greg Tzikas and used with permission of the author. All other rights reserved by the author.

Posted in cs-wsu, CS@Worcester, Software Development, SoftwareDevelopment | Comments Off on Worcester State University

Software Dev Capstone

Hello, I am currently taking my final class for my degree in Software Development and I will be posting related information in future posts. We will be working on openMRS in a group of 5 people. We hope to contribute quality work this semester, and hopefully learn as much as we can about developing experience.

From the blog shatos by shatos and used with permission of the author. All other rights reserved by the author.

Posted in CS@Worcester | Comments Off on Software Dev Capstone

Web Development with Guile Scheme

Guile Scheme is a wonderful general-purpose programming language. I
use it for simple scripting, systems programming, game programming,
and of course, web programming. I think that, despite not having the
wealth of libraries available in Ruby/Java/etc., Guile provides an
excellent environment for web programming thanks to its advanced
features: First-class and higher-order functions, hygienic macros,
pattern matching, quasiquote, and REPL server.

Guile ships with a nice, small set of HTTP modules in the (web)
namespace that expose data types for URIs, HTTP requests, and HTTP
responses. Guile also provides an HTTP client and server. What makes
Guile’s web modules stand out from a lot of other languages is that
they use expressive data types to represent URIs and HTTP headers
rather than treating them as strings. This eliminates an entire class
of bugs and security vulnerabilities caused by mishandling "stringly
typed" data, such as header injection. Using expressive data types
will be a common theme amongst all components of the web programming
tools I will describe below. Now, let’s see how to write a web
application with Guile!

Handling Requests

WRITEME: Status quo: String-based routes

WRITEME: Guile: Pattern Matching

Rendering Responses

WRITEME: Status quo: String-based templating

injection bugs


Iterative Development

WRITEME: Status quo: Auto-reloading changed files

WRITEME: Guile: REPL server

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

Posted in gnu, guile, scheme, WSU | Comments Off on Web Development with Guile Scheme

call-with-container: Linux containers for GNU Guix

Containers have become a hot topic. Docker, LXC, Rkt, systemd-nspawn,
etc. are popular and make a lot headlines on technology news websites.
There are even entire conferences dedicated to "containerization."
The next release of GNU Guix, a purely functional package manager,
will feature basic support for Linux containers, dubbed
call-with-container. GNU Guix is written in the Guile Scheme
programming language. Thus, in typical Scheme fashion, we have used
the call-with-* naming convention (like our old friend
call-with-current-continuation, for example) to refer to the
container implementation, which allows the user to apply an arbitrary
Scheme procedure in a new, containerized process. For those familiar
with Guile, it’s like a fancier version of primitive-fork. In
addition to forking via clone(2), call-with-container unshares
resources such as the network, mount, and user namespaces from the
host system and creates a temporary file system in a chroot (though we
actually use pivot_root instead), among other things.

So, given the fast-paced world of Linux container development and the
companies investing huge sums of money into the aformentioned tools,
why add another implementation to the mix? What’s wrong with the
status quo? What can Guix possibly add? Let’s dive into the
motivation behind Guix containers, how they differ from the status
quo, and how they solve issues that other implementations cannot.

The Trouble with Disk Images

The term "container" has in practice come to mean a disk image whose
binaries are run in a lightweight virtualization with kernel
namespaces. Docker and friends work with raw disk images, or layers
of them, as their fundamental data unit. There are several issues
with this approach. This presents issues with regards to disk and
memory usage and file system complexity. Containers typically include
the minimal core software of a GNU/Linux distribution within them,
plus the extra software that is application-specific.

WRITEME: Deduplicating software amongst containers via
content-addressable storage (/gnu/store) and full dependency graph

Imperative vs. Functional – The Dockerfile Problem

WRITEME: Functional > Imperative. Mention issues with imperative
Dockerfiles and how the order of operations influences how well the
cache is utilized. Docker cannot possibly know the details that Guix
knows because Docker defers to other package managers to do things
that are opaque to it.

Guix and GuixSD Containers

WRITEME: Simple, unprivileged containers with ‘guix environment’. Add
example for sharing file systems from the host.

WRITEME: GuixSD containers with ‘guix system container’. Mention the
use of a real init system (dmd) and the full-system configuration

WRITEME: An arbitrary Scheme script that launches a container, showing
that (guix build linux-container) is a generic library to be re-used as
you wish.

Future Work

WRITEME: The future: cgroups, networking, orchestration. Reach out
for contributors.

As an aside, before I bid you farewell, dear reader: I live in the
Boston area and I’m looking for local meetups and conferences that
would welcome a technical presentation about GNU Guix and the benefits
of the functional package and configuration management paradigm. If
you have the connections and I have piqued your interest, please send
an email to davet at gnu dot org.

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

Posted in gnu, guile, guix, scheme, WSU | Comments Off on call-with-container: Linux containers for GNU Guix