Applications with Mojolicious

Applications with Mojolicious

This is the first post of a series on the Mojolicous web framework originating from my experiences at ISP, Fachbereich Informatik of the Technische Universität Darmstadt. Step by step, we will create a simple blogging platform using Mojolicious.

Only 7/12 parts completed

The biggest list of game development resources on the web

The biggest list of game development resources on the web

This is a huge list of links to gamedev related sites (there are 100+ categories):

Read more »

Git flow meta page

A successful Git branching model by Vincent Driessen [nvie]

In this post I present the development model that I’ve introduced for some of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management.

A Brief Guide to Git Flow

The idea is that you have a master branch that has nothing more than the latest stable release (which is the latest tag) and a develop branch that has all of the latest features and code that are yet to be released. You then have feature, release and hotfix branches that are used for various purposes.

Using git-flow to automate your git branching workflow

Vincent Driessen’s branching model is a git branching and release management strategy that helps developers keep track of features, hotfixes and releases in bigger software projects. This workflow has lot of commands to type and remember, though, so there’s also the git-flow library of git subcommands that helps automate some parts of the flow to make working with it a lot easier.

See Also

git-flow – Git extensions to provide repository operations for nvie’s branching model

RFC: new.pm – a perl -e use/new shortener

RFC: new.pm – a perl -e use/new shortener

I tend to use perl one-liners extensively, mostly for testing purposes. In particular, I often load a module with a loooooooooong name only to instantiate it once. And it’s boooooooring to type the whole name twice.

So I came up with an idea of a one-liner shortener along the lines of:

perl -we 'use new qw(My::Very::Long::Module x foo 42); print $x->get_foo;'

An Incremental Approach to Compiler Construction (2006)

An Incremental Approach to Compiler Construction (2006)

I think the incremental approach is terrific, because it allows you to get to a program the emits assembly and builds a working binary in week one.

Splitting a repo based on folder?

Splitting a repo based on folder? [reddit]

I have a repo that really should have been two different repos. Each project is in it’s own folder though (and I don’t think that no modification was made to both folders at the same time). Is there a way to split out this into two repos?

Splitting a Subfolder out into Its Own Repository with Git Subtree [reddit]

I have secretly been working on a project for a number of months now. It got to a point where I decided it will be best to split some folders in the project out into their own Git repositories. Previously, the project was a large monolithic application.

I didn’t want to just split them out on a blank slate but have their Git histories maintained. After some research, I finally settled for git subtree, one out of the many.

A hack for getting the email address Git will use for a commit

A hack for getting the email address Git will use for a commit

Suppose I have branch topic checked out. It often happens that I want to

    git push origin topic:mjd/topic

which pushes the topic branch to the origin repository, but on origin it is named mjd/topic instead of topic. This is a good practice when many people share the same repository. I wanted to write a program that would do this automatically.

Another Git catastrophe cleaned up

Another Git catastrophe cleaned up

My co-worker X had been collaborating with a front-end designer on a very large change, consisting of about 406 commits in total. The sum of the changes was to add 18 new files of code to implement the back end of the new system, and also to implement the front end, a multitude of additions to both new and already-existing files. Some of the 406 commits modified just the 18 back-end files, some modified just the front-end files, and many modified both.

Perl Advent Calendar 2016

Perl Advent Calendar 2016

  1. Graphing Moose Classes Automatically – Meta::Grapher::Moose
  2. Jingle Refs, Jingle Refs, Jingle all the way – Ref::Util
  3. Benchmarking with Bencher – Bencher
  4. Yuletide Logging – Log::Any
  5. Gathering all the Presents – List::Gather
  6. Help Santa Klaus Reward Only Nice Children -Schedule::LongSteps
  7. Writing git hooks – Git::Hooks
  8. Geocoding the world at volume with open data – Geo::Coder::OpenCage
  9. Too Many Choices For Santa – Params::Validate::Dependencies
  10. Combining wishlists for production and shipping planning – Text::CSV
  11. REST-oring Christmas Tranquillity – Magpie
  12. Trying for a Happy Christmas – Syntax::Keyword::Try
  13. Getting Drunk with Mojolicious and Memoize – Memoize
  14. Using PPI for static analyzis – PPI
  15. Making Perl Functional – List::Util, Geo::Calc::XS, IO::String, Text::CSV
  16. A Geo Parser for vast amounts of Text – Geo::Parser::Text, Geo::Coder::OpenCage, Text::NLP
  17. Writing command line tools made easy – App::Spec
  18. Warm and Fuzzy Inside – Text::Fuzzy
  19. Using containers with Linux – Linux::Clone, Linux::Unshare, Linux::Setns
  20. PDF::Reuse + Reduce & Recycle – PDF::Reuse
  21. Organizing catalogues and wishlists – Dancer::SearchApp

C::Blocks Advent Calendar 2016

C::Blocks Advent Calendar

Perl is great, but sometimes I find myself reaching for C to do some of my computational heavy lifting. There are many tools that help you interface Perl and C. This module differs from most others out there by providing a way of inserting your C code directly where you want it called, rather than hooking up a function to C code written elsewhere. This module was also designed from the outset with an emphasis on easily sharing C functions and data structures spread across various packages and source files. Most importantly, the C code you see in your script and your modules is the C code that gets executed when your run your script. It gets compiled by the extremely fast Tiny C Compiler at script parse time.

  1. Weaving procedural C code into your Perl code
  2. How to get data across the boundary between Perl and C
  3. How to get information across the boundary between Perl and C
  4. How to declare and share C functions
  5. Benchmarks
  6. Generating and modifying code
  7. Pointers and data structures
  8. Controling access to pointers
  9. The details of writing a type for C::Blocks
  10. How to use C::Blocks in multithreaded Perl code

See also C::Blocks