Saturday, March 30, 2013

Markdown and Phantomjs

Looking the evolution of use of markdown in sites like github, I feel that markdown is becoming a way to platformize your service.
travis-ci.org is an example of that: by embedding an icon in the home page of the repository whose content displays dynamically the build status of the repository you end up getting a truly dynamic repository home page.

Playing on this theme I was talking with folks at work yesterday.. I saw a friend awesome picture - he has just had a baby and made his desktop background a picture of his baby and his dog. It was truly an awesome picture. My first immediate reaction was to take a photo of it. Why? because I felt that what I and his physically collocated colleagues could see and enjoy and share-feelings with him, was not possible for all our remote, not-physically collocated colleagues. And given that this a thorn in my eye every time I see it, I took a picture to send it around.
My friend laughed at me explaining that all his friends have already seen the photo - only me the non-facebooking guy hasn't. I wasn't satisfied. What I cared was not photo sharing with friends.
The desktop background/screensaver plays a different role.
It is always there today tomorrow and makes the people that more closely work with a person getting a continuous (and often changing) vibe about their colleague personality, face in life, mood etc.
The desktop background is one more thing that makes face to face work relationships work better/differently than remore ones.
Ok, then I can fix it. Creating a mydesktopbackground.com site with a desktopclient that pushes the current desktop when it changes to a site making that same picture available to become my web background/homepage photo in my github pages, in my blog, in my homepage  background image.... all that are possible, easy make sense. And then you can actually not only see that picture but also the history of  the backgrounds... to see how you have changed. and maybe do that for all your desktops. And maybe do that for yourandroid/iphone background as well. etc..
One thing that is at the back of my mind that makes some of the connections with the first paragraph is that the wealth of tools like phantomjs that allow one to easily/freely with an API convert a complex html layout of an image/dashboard/report rendered as a .png or jpg allows any page to be "sourced" inside a markdown page. Let me repeat, before you had to rely on more open systems that allow one to include full html as part of an html widget (think disquss etc..) . But today even in the most restricted systems - as long as they allow the embedding of a picture, then you still have the option of including a the static rendering of that page. It's not click sensitive (note to self - I wondered what has happened to the original html image-map and whether I could generate using phantomjs not just a  picture rendering of a page but also an imagemap that would capture the different click targets that every subregion of the page has... that would be cool) but it can make a diff in how connected / integrated diff services feel.

Thursday, March 28, 2013

And more HS experiment successes

So far this has been a 4 out of 4 experiments all with success all with 12-24 hrs TAT

1. blogger -> github blog conversion (data entry)
2. csv generation for blog (python)
3. convert eclipse project to mavem
4. travis-ci integration (the most recent one - https://github.com/ogt/contractor-recommendations/pull/4)

They have involved 3 folks - (3 and 4 ) had the same people.

By now I get almost all candidates with all questions answered.


Still Issues:
 - I may need to ask people to do a final merge before submitting their pull request - to enable automatic merge
 - people still are bidding 11% on top of the budget
 - Inviting of people that have successsfully done jobs with related skills in the past creates a practical guaranteed success. They know the drill.
 - It makes sense to correct publicly people so as people can understand what they should do better the next time.
 - Compiling a directory of prior jobs, prior people that have done things seems useful.


Wednesday, March 27, 2013

More HS Experiment success


More HS Experiment success again.

This time worked with approximately 15 hrs total TAT and it involved in my view a more niche set of skills (heroku + maven)

Still, people are confused about
- Fork/Pull Request. The contractor in this case cloned my repo and told me that its ready for me to pull from it (instead of doing a fork/pull request)
- Contractor writing his own HS. The contractor in this case didn't understand that I was asking him to write what he did - he assumed that I was asking for instruction of what I should to receive/test his work.
- When to have the work by: there is no indication from my part about the timing. It may be better if I say - I expect this to be done ina few hours - and a max 24 hr TAT from job start. Will hire the first person that follows the applicant instructions correctly - if multiple will hire the person with the earliest TAT time.

Other issues
- Another debate is the confusion between the OD job post and the issue.
Currently they are almost identical but in reality they cant be - there is a diff assumed context between the two.
- I added prior jobs section as part of the envelop to provide proof of easy $s/Feedback and to collect jobs across clients
- A candidate answered with the screensnap I was asking for in the application - I ended up hiring him instead of another candidate that had also answered the questions and I was about to hire.

It seems that I need to
- Ask for github id as part of the standard envelop
- Ask for TAT in terms of hours

Also I may want to point out that this will stay as a public contribution - that the user will be able to point to in the future.

Tuesday, March 26, 2013

Life and death in twitter

I just found out in a skype chatroom -  they were talking about a python/django contributor that apparently died recently .... http://www.holovaty.com/writing/malcolm/ .

I followed the link to his twitter account expecting to find out more and I found just his stream of normal every tweets just suddenly silencing a week ago. Somehow macabre, somehow realistic, seeing this person talking every day, completely unaware that his tape was about to run out and suddenly there is no tape any more.

Monday, March 25, 2013

More HS experiments

Continued last weekends experiment.

I found a simple utility called pipdiff that is checking for all your installed python packages and displays whether they are available with pip and if they are wether they are at a diff version from the archive. I wanted to run it once against my system... but unfortunately the author had just posted it as a gist ... the util that test your pip installs is not itself pip installable.,
At that point I thought, "if HS were to exist" I would say, "I wish that this utility (url) to be installable with pip",


hit my magic wand and I guess within 24 hours I would get a notification "Your wish was granted", I would run

> pip install pipdiff
> pipdiff ....
...
and everything would work as I would expect home.
So , I promise I did yesterday morning something along the lines of that wish (~30-60 mins), and today (no other communication), started writing this blog, stopped went back to shell and did (I was that confident!!)


ithaca:pipdiff odysseas$ pip install pipdiff
Downloading/unpacking pipdiff
  Downloading pipdiff-0.1.tar.gz
  Running setup.py egg_info for package pipdiff
    
Installing collected packages: pipdiff
  Running setup.py install for pipdiff
    
    Installing pipdiff script to /usr/local/share/python
Successfully installed pipdiff
Cleaning up...
ithaca:pipdiff odysseas$ pipdiff
Django==1.4.3                            PyPI:Django==1.5
Fabric==1.5.1                            PyPI:Fabric==1.6.0
Jinja2==2.6                              
....

I was that confident!!
I then went and searched google (24 hrs after I made my wish)


and there I can find already indexed the PyPI utility as the 2nd result that google serves for the pipdiff keyword. (I actually find the corresponding github repo of mine that was used for the job as the 3rd result)

Here are the relevant links:

- Original repository issue - https://github.com/ogt/pipdiff/issues/1
  +  cloned issue above as oDesk job post : https://www.odesk.com/jobs/Register-python-utility-PyPI_~~35eac626ce139e45
- Python module : https://pypi.python.org/pypi/pipdiff/

- Pull request : https://github.com/ogt/pipdiff/pull/2


Sunday, March 24, 2013

Laptop in the sun

I left my laptop on the dinning table in the morning.
It went to sleep mode.
I come in and found the laptop woken up with the fan going in full blast  trying to lower the temperature.

Who could be doing what in my laptop?

The only explanation:
The day passed. The sun turned... the direct sunlight actually rose the temperature enough to make some laptop temperature alarm go off and make it wakeup....


Integrating Github flows with HS

Reflecting in last weekends experiment in HS I feel more and more that mapping jobs to github milestones is the wrong idea:
1. I can't seem to find a way to even point to a milestone page in github!! Pointing to issues works as expected but ... milestones seem to not be a top level object in github's model
2. I can't seem to create a hook against a milestone status change (so as I can automate for example my OD job completion
3. The milestone description editor isn't as good as the issue description editor.
4. It is really non-obvious to navigate to a milestone - it is more of a grouping tag than a standalone object

On the other hand mapping issues to jobs has its own weaknesses.
1. When the user submits a pull request ... it becomes yet another issue 
2. No obvious way to relate the two issues together.

The last thing seems a rather obvious weakness. I wonder why isn't that part of the typical use case of a person that runs his project from github. They capture various bugs they find, enhancements they plan to do as issues. The issue list also grows as people report bugs make enhancement requests. Everytime an external contributor takes on an issue and fixes it, the pull request will create a new issue.. Quick look at various projects shows that people use naming conventions like "fixes Issue xxx".

Looking at stackoverflow for preferred workflow... doesn't bring an exact match to this problem...actually it does... Surprising.. so it is feasible to associate a pull request to an existing issue but thats available only at the api level!!... or with my favorite gihub command line utility.. hub.

$ hub pull-request -i 4

This means that eventually we can  have our cake and eat it too. I think I am switching..
Next experiment will be using issues as OD jobs.