RSS
 

Archive for the ‘Projects’ Category

“Hello World” by any other name – Part #2

04 Feb

Part #2 of the thinking-out-loud-learn-a-new-language series (Part #1 here)

 

Ok, so learning a  new language is cool and exciting, but we’re doing it on the run here, full time job (and then some), 2 kids, 1,5 hour (split between 3 stretches) commute time two .. the works :) , so time is one problem and focus is another, so sort of getting it right from the start is important here. This means I should get some proper metrics and goals for this to work, that my choice needs to be as practical as possible and that whatever it is, it must add a new dimension to what I already know (syntactic sugar aside) and not simply be an alternative to, in this case, PHP.

So, a short list of things that should influence the choice:

  1. I use Linux – of the Ubuntu flavor - so proprietary or OS limited stuff is, baring alternatives, out of the question (should I consider Objective-C ? .Net based languages despite having Mono?)
  2. Needs to have a wider or different scope than that of PHP – i.e. mostly web of the HTTP flavor – doesn’t necessarily have to do EVERYTHING out of the box, but flexibility is smiled upon
  3. Obviously needs to have good official documentation and I would appreciate some liveliness on future developments – stalled “We’re fine this way” languages lose points
  4. It’s surrounding tools and infrastructure aspects again, should be available and relatively easy to setup – if the best language in the world requires a HPC infrastructure to get a “Hello world” running, it is most definitely out of the question :)
  5. Must provide drivers and ways to connect to loose infrastructure applications (db’s, web servers, graphic drivers, etc)
  6. while syntax and paradigms are not the complete goal here, it shouldn’t be a completely brainfck’ed up language (yes yes a pun there :) )
  7. Having Enterprise written up, left, right and generally all over it is *NOT* a good sign , too :)

So, yeah, pretty wide criteria here, I might need to narrow the scope a bit, but it will serve me as a sort of checklist that I need to run against. While I will probably return to make the list better, I think I can start shopping around now :)

Any words on this? Comments? Have you done a similar process and wish to share your thoughts?

 

“Hello World” by any other name – Part #1

03 Feb

PHP, it wasn’t the first, oh no,  I did the regular routine, academic for the most part, most long forgotten :

But PHP as been my traveling companion, for no particular reason, from 3, to 4, to the very much welcomed 5 series. I enjoyed the wide support, the magnificent documentation, the easy entry level, it’s ubiquity, it’s presence in hosting services everywhere and having stick with it for so long I saw it evolve over time, bringing new constructs and features to the language (even if never doing away with all of it’s garbage) and while I can’t evaluate how fast or how intensively other languages changed, I was never truly let down by new PHP releases and what they brought along, or will continue to bring.

But still, I had other experiences, Ruby still plagues my PHP experience with it’s 100% oop approach to everything, I love the fact that you can write

"what, a string?".methods.sort

and know exactly what you can do with a string, alphabetically ordered just for my viewing pleasure :) , I loved how well the mixins worked and how gem’s coming in from everywhere and anywhere would just immediately mingle and turbocharge existing classes (yes, hello PHP 5.4 traits, I know you’re coming) . I used RoR – a bit after the “OMG It’s magic” hype went down, that sort of impossible-to-happen hype really brings out the irrational hate in me – and liked it a lot – I mean, when push came to shove, and complexity came into play, upgrading Rails became less and less easy / possible, without major rewrites (ohh 2.0,2.1,2.2 series), and it was always exciting too see Ruby apps panting with 400MB of used RAM while the equivalent PHP app was flying with 50MB .. but those are infra-structural details that have many strategies in how to overcome .

Anyway, while PHP will continue to play the lead role in my money making abilities, truth is I need to see what’s out there again, I have nagging friends who troll away with ease for my PHP choice of language, not that I put much faith into generalist trolling of the friendly kind, all languages have their ups and downs, and they’re not even bothering to use radically different languages, so I know it’s just PHP punkin’ around :) , but still, my synapses need the change, I need to experiment with different approaches and so, I need to learn a new language :)

But what should I choose ……….

(to be continued)

 

Quick Update to PHotoimPorter

28 Sep

So, you all know PHotoimPorter right? The little PHP script I use to move the files away from my camera cards and into the mass storage, while organizing files into a Maker / Model / Date folder scheme.

Anyway,for a while I was depending on Exifer to extract the information out of the files and it was enough for the image files I used (“old” Canon RAW files and JPG’s) but recently I used a Canon 30D for a day and those pesky CR2 files where confusing Exifer (who is mostly dead for a few years from what I gather) . So I had to drag my all to lazy ass around and look for alternatives and, sure enough, Core PHP has our back with the Exif module. “Yay” I said, and so I calculated the shortest path to get it running instead of Exifer, did it, tried it, loved it, commited it, pushed it and now I blog about it :)

My next trick is two fold:

  1. I need a serious refactoring to the information gathering process, I’m doing it upfront leaving the copying for later, and that obviously has some issues – like over usage of memory for large file sets.
  2. Let the user choose the folder scheme you want, I’ll have a look at what interesting Exif information I can expose and let you configure things for yourself

 

“Yay” I said a second time – and promptly published the post and exited the room.

 

Shirikisha

03 Sep

Following my heart felt attempt to revive my interest in writing, and having felt over and over again that the tyranny of 140 characters makes perfect sense and that some tools complement instead of replacing each other, I’m going to talk about a project I’ve had for quite a while, that has sort of been neglected in it’s marketing and “commercial” aspect because, in all honesty, choices about time occupation and allocation needed to be made and I decided to get some code done instead of marketing it :) .

Mind you, this is not to be confused with a real, professional product page, I’ll get around to doing that, but this is my introduction of Shirikisha to the world, nothing more ;)

A bit of history

Shirikisha began as a project called CIARIS for the ILO/STEP programme, where the goal began as a rework for a simple static document based website, and as talks progressed the scope also grew to an online social platform with cooperative tools namely public profiles, blogs, Workspaces – an analogy for a set of tools made available to a group of people within a context – and a Library where publicly available documents where displayed.

The work began in 2006 with myself, Beverly Trayner and Pedro Custódio, we later had the pleasure to work with David Bluestein, Rory Carter brought business experience to the team, Luis Cavaco helped on the Design front, Carla Alcobia has been with us from the beginning testing the application and administering it for STEP  and Josien Kapma and Nancy White helped us test and brainstorm.

In 2007 we launched the beta version and later, after a test period, we opened up the CIARIS site. After the launch and initial development, we had further runs with STEP and with a few outside partners where we added and improved on the platform . At this point we negotiated and got the rights to the application itself and there, Shirkisha was born.

So, why Shirikisha?

The goal for Shirikisha was to provide a set of tools – for a wide and multilingual public – that would enable both individuals and groups. As with all naming that comes after a product is made, we took a while and searched the far reaches of the Internet to find a name, until we came across a Swahili dictionary on The Kamusi Project and as we went through it we found a single word that encompassed brilliantly both the meaning and the mood we wanted to set with the project, the word was Shirikisha and here are its meanings:

  • incorporate
  • allow to participate
  • cause to participate
  • make a member of a society
  • give someone a share in something
  • coordinate

Unquestionably we had found our name, we had our Shirikisha :)

Ok, what does it do then?

When we designed the tool that would later become Shirikisha, our main focus was to provide a platform for individuals do come together, under a certain context provided by the organization who “owned” the tool, and develop documents, projects, meetings, etc. These individuals would have their own identity and the platform should facilitate the meeting of equal minded people, finally since the workspaces – who are not necessarily public or visible -  could use the platform to produce written content, the creation of a curated display of such documents was also created in the form of a “Library”.

So, the platform allows an organization to have a publicly available website, with a simple content management system, people can sign up, fill their profile – which can be customized by the Organization in respects to certain fields that it should have – look up other profiles, create a personal Blog – this comes under the need to provide and empower certain individuals, but it’s quite simple and not mandatory – , search the Library for  community created and published documents and most of all, create Workspaces to develop their own work.

The Workspaces provide a set of tools for groups to communicate, organize themselves and create content/documents under the privacy of the workspace. A workspace blog is provided as a public tool, so the group can communicate with the world as a way to provide updates on the work in progress. The content produced by the workspace can later be published to the curated organization Library – following metadata input and approval by the organization administrators.

In summary, as beyond my possibly not so clear text ;) , the feature list for Shirikisha is following:

  • Site wide simple Content management System
  • Platform signup with custom profiles and optional approval system
    • Individual control over visibility of profile fields (Private, Friends only, Public)
    • A “people directory” to help people find .. well , people :)
    • An optional Personal blog
    • Messaging system between platform users
    • Notification system for almost every aspect of the web site, with a choice of Email updates or RSS feed (public and “private”)
  • Workspaces
    • Creation of visible or invisible Workspaces
    • Public Blog
    • Calendar with Event input
    • Threaded Discussion Forums
    • Multiple threaded Wikis (with PDF export capabilities)
    • File repository
  • Library for content produced on the Workspaces

A business?

Well, yes, we created what we think of as a very complete, awesome (pardon my bias :) ) tool that we would love to continue to grow and see what our tool can make for people. Consider this a Request for Comments, we would love to hear from you, how you feel and what your thoughts are in regards to Shirikisha, we want to harvest a few smaller projects, individuals, commercial or ONG’s. I don’t want this approach to be considered a beta test, or a trial run, we have quite a long road with CIARIS and a few others, but we do want to go slow and personal before evaluating and opening up to everyone, so big or small (in size or in budget), don’t be shy and talk to us :)

You can contact me here, via the comments or by my Shirikisha Email : dramalho[at]shirikisha[dot]com  , in the mean time, check out the CIARIS site whether to take a look at Shirikisha or if you have an interest in Social Inclusion and want to join the Community :)