1. Cantemo update

    Just a quick update to what is happening with Cantemo these days.

    Firstly we have two main products in the marketplace at the moment, MediaBox and Portal DAM. Portal is our enterprise product, a Digital Asset Management system that can be tailored to suit just about any need or requirement. For instance if you need to build

    • Cloud hosted Digital Asset Management system
    • ┬áSystem that has multiple workflows for multiple user groups
    • A system that integrates with many different parts ( think Business Process Management systems, Transcoder farms, Newsroom Systems, NLEs, Digital Rights Management, Playout servers) and can work as the controlling force for all of that.
    • System that can scale to many hundreds of thousands of users and millions of assets with multiple storage solutions.

    We also have the MediaBox aimed at smaller workgroup solutions, such as PostProduction, small workgroups, Education, and other areas.

    Common to both is the following:

    • Sold through a network of resellers and system integrators
    • Can be extended with Apps such as Annotation Tools, usage reporting.
    • Has a open and unique API to build your own tools.
    • Can integrate with the Apple Final Cut Pro, Adobe Premiere and other NLEs

    We are showing these systems at NAB along with the apps and the integration with partners such as Object Matrix and Vidispine. If you would like a online demo, that can also be arrange.

    By timc3 on the
    April 19th, 2012
  2. Removing hacked WordPress files

    The other day someone kindly told me that this blog had been “hacked”. Actually what had happened was that someone had managed to inject PHP code in to the wordpress theme files, the wordpress blog files and all the plugin files.

    What was particularly interesting was that it only showed up if you haven’t visited the site before, making it harder to spot. In the header of each PHP file there was a php eval base 64 encoded string which contained this redirect code.

    If you have a simliar problem you either need to grep each file containing base64 encoded PHP or, replace the main wordpress blog, re-upload the theme and reinstall all the plugins. If you want an easy fix, sorry, next time consider using Fabric/Puppet/Chef and having a backup version of the site that you can deploy at the drop of a hat.

    Suffice to say that I am only using WordPress really because its been making my life easier and I can concentrate more on Python, Javascript, GoLang and Erlang efforts for work and the fun stuff but I am seriously thinking about jumping platform. Also it doesn’t help that the host this blog is quite slow these days.

    By timc3 on the
    March 24th, 2012
  3. Postgres and psql for beginners

    Actually I am not sure whether I can put myself in the beginners pot, having run Postgresql for many years and built several products and service upon it. However a round of using PSQL for common use cases is needed I think. So this basically is for that usual situation where you have logged in to the server that postgres is running on and have access to the user postgres or have the rights to use psql.

    Startup psql command line interface

    Meta commands
    Meta commands are excellent short commands processed by psql itself. Some are shortcuts to longer SQL statements that get executed, others are system commands such as change directory.

    List databases on the system

    List of databases
    Name | Owner | Encoding | Collation | Ctype | Access privileges
    database1 | tim | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
    : postgres=CTc/postgres
    template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
    : postgres=CTc/postgres
    database2 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    (5 rows)

    List users on the system

    postgres=# \du
    List of roles
    Role name | Attributes | Member of
    tim | Superuser | {}
    : Create role
    : Create DB
    postgres | Superuser | {}
    : Create role
    : Create DB
    another | | {}

    List help


    List help


    Change to database called “databasename”

    \c databasename

    By timc3 on the
    February 1st, 2012
  4. Going back to Java applets for upload

    This is something that I didn’t think that I would be writing in 2012 – we are switching to a Java based applet for our uploader.

    The problem has been that browsers and their operating systems handle uploads differently. Really differently. Evening using a project like plupload, you can’t polyfill over the cracks. There are new APIs coming out (if you want to call it HTML5, not strictly true though), but to handle backwards compatibility, including IE9, there needs to be a mechanism to make it generic and the only thing is Java.

    • Flash can be ok, but there are limitations in filesize,
    • Javascript depends on the browser implementation.
    • Gears & Silverlight – not exactly something that I want to deploy.
    • Java – the cross platform way.
    • Depending on the browsers built in widgets – Not possible for large files.

    We need to transfer large files of over 2Gb, and some browsers will actually try and load the entire file into memory before transferring. Certain death of the browser on old machines.

    Java gives us chunking, it gives us a cross platform implementation, it gives us a easy testing mechanism. 2012 – roll out your applets.

    By timc3 on the
    January 25th, 2012
  5. Javascript MVC frameworks with MVC server frameworks

    Really interesting article about Javascript MVC frameworks at CodeBrief.

    Personally and for work I am totally into backbone.js. It is changing the way that I work with Javascript in my web applications for the better by bringing greater structure and organisation to my code and having a common methodology in the way that I approach server-browser communications.

    The only problem that I have is that having a MVC stack in the browser is fine, but then we have the same on the server side with Rails (ok not exactly MVC), Django, Node.js or what have you. We end up with MVCMVC or rather MCVCMV, and this is of course a pattern that causes code duplication if we are not careful.

    I might look into creating backbone.js models from Django at some point, but I am not sure that this is the correct route. Obviously the way that GWT and PyJamas work becomes more compelling. Well for me GWT is not that compelling as I don’t really want to have to work on frontend in Java, I don’t think there is the control that one needs over the presentation and I can’t stand Eclipse/NetBeans/xxxx IDE’s as they are slow and cumbersome.

    Regarding the Codebrief article ember.js came out on top, and I can see the negatives of backbone.js in its somewhat boilerplate approach though I think this can be minimised somewhat.

    Personally I think my goals going forward for Javascript is:

    1. Find a decent testing enviroment that I am happy with
    2. Loading of modules should be optional, and I need to work to convert my existing application to load intelligently our backbone.js models and views
    3. Greater reuse or automatic generation of code

    I am intending to write about all of this on this blog in the near future as I come up with more conclusions.

    By timc3 on the
    January 21st, 2012
  6. The new web stack

    There is a really interesting article over on Ilya Grigorik’s blog titled . Be sure to read the comments if you are interested in how AOL built a similar system many moons ago.

    I have been thinking about next generation web stacks, with proper (M)VC in the browser, communication with server using SPDY / WebSockets / SSE or similar with SSL, and then the topology of the stack in the background being event driven and that article has some really nice points. Kinda interested in playing with 0MQ now and perhaps hooking it up to Go, Erlang or just plain old Gevent.

    Probably wouldn’t use a NoSQL backend because there is little reason most of the time.

    The hackernews article is here: http://news.ycombinator.com/item?id=3481140

    Damn I feel old fashioned having this blog on Apache | PHP | MySQL. At least my work environment is Nginx | Gunicorn | Python | Postgresql

    By timc3 on the
    January 19th, 2012
  7. New year, new workflow improvements

    So another new year has started but I continue to improve and refine my workflow and tooling.

    Firstly git. The more I learn with git, the more I like it, and the more I get into it. I like the fact that I don’t need any other tool, if I was using Mercurial I would still have to use Git because of the amount of excellent code being published into GitHub. For example “git whatchanged” or however.

    ZSH – I think its maybe because I invested the effort to configure it, put together my own theme but I am getting lots of improvements out of this.

    Dotfiles in GitHub. I have more than one machine nowdays, in fact I generally work on 6 machines (Laptop, Virtual Ubuntu on Laptop, General purpose SSH server, home server, home OS X box and a work VMWare image), so having generic dotfiles with my configuration, ZSH configuration, Vim config and more really helps.

    Working with django, multiple branches, I have switched pretty much fully to virtualenv and virtualenvwrapper. I now have one command for switching, with scripts that can move my config files etc.

    SublimeText2 is pretty much my editor of choice on GUI with Vim on the server.

    iterm2 for terminal on OSX. TMux for remote servers, so if I am using something more dumb than iTerm2 I still have multiple panes. This together with trying to get more and more keyboard shortcuts (even in Apple Mail), and less mouse usage is pretty damn good.

    At some point I am going to start blogging more about other bits and pieces here I think, and move a more personal blog somewhere else. Either more in Facebook or into GooglePlus. This will all be linked together, as I have many separate profiles all over the place now.

    By timc3 on the
    January 13th, 2012
  8. My must have OS X software

    I recently had the opportunity to look at what I would install on a vanilla OS X system and its was quite interesting to look at what I depend on and if I didn’t have it, what would be on my Christmas software list. So here goes:

    1. Git: Probably not the first thing that I would install, but it wouldn’t be the last. Via the proper GIT installer
    2. Python 2.7: Wouldn’t bother with the OS X version, I would go straight for the version from python.org
    3. Postgresql 9.x: Of course I need a database.
    4. Brew: Homebrew is probably the best way to install lots of little scripts and things
    5. XCode: For development or installing lots of interesting software, you are going to need it at some point.
    6. MacVim: Fast becoming my favourite editor.
    7. Quicksilver: Good launcher.
    8. iTerm2: Terminal done correctly.
    9. Google Chrome: Love safari, but this is great as well.
    10. Scroll Reverser (Only if using Snow Leopard or previous).
    11. Evernote: Great task management.
    12. DropBox: Good way to sync multiple documents.

    I think the weirdest thing about this list is that there is no Office, no mail client (I can use Mail or Google Mail), none of the productivity Apps that I used to use. Increasingly I am turning to try and run everything within Terminal or iTerm (MacVim just makes me comfortable, but I spend large amounts of time in plain old vim). The other odd or perhaps not is that everything is available at no cost.

    By timc3 on the
    October 18th, 2011
  9. dotfiles

    Having started to change my environment quite a bit by changing from bash to zsh, Textmate (ok I am still using it quite a bit) to Vim and MacVim with Janus, I thought that I would join what seems to be a popular movement and share my dot files on GitHub.


    By timc3 on the
    October 10th, 2011
  10. Javascript

    Never thought that I would be saying this, but I am really liking Javascript at the moment.

    By timc3 on the
    September 16th, 2011