Saturday, September 29, 2012

dpi

I ran across this today, a short intro to running a django based website on the raspberry pi. To me this is really cool, as I think all of us can learn a great deal from working on limited hardware. It is challenging to make things work well there, and we really start to appreciate the cost of the things that we take for granted when working on larger systems. While obviously it isn't critical that we optimize all of our code to run on things like this, or even to be the most optimal as sometimes the real cost is developer time not execution time. However, being aware allows us ad developers to make that choice with more full knowledge, instead of making it by accident. Beyond that we are also just seeing computers everywhere, and our world is driven by them; so it is essential that we learn to make the best use of them no matter what their scale.

Friday, September 28, 2012

First presentation

Well, last night I gave my first developer related presentation on the Disco project. It was an interesting experience presenting to the Boston Python User Group, and well worth the experience. I feel that participating in groups in this manner is critical to professional development, and will force me to become a stronger developer. By presenting material to others not only do I get to share an interest with them, but I am also forced to solidify my understanding of a topic. One of the problems that I have is motivation to explore all of the random ideas that I have. I feel that presenting lightning talks may be a good way to explore them since not only will I have a deadline to get them done by, but additionally I will have the excitement and motivation of sharing those ideas and results with others who may find value in them.

Saturday, September 22, 2012

impress.js quick take

I am very much happy with impress.js as an alternative to regular powerpoint presentations. I think the process might take a bit longer, however it feels much more engaging and I am more into creating this presentation than a regular powerpoint. So I would highly recommend this for anyone with a bit of a technical background looking to put together a presentation.

Web based presentation

Today I have been working on my slides for a lightning talk I will be giving next week at the Python User Group in Boston. I decided to try something different than the normal powerpoint presentation and will be utilizing a webpage instead. I created a simple presentation using the Strut utility which generates a page utilizing impress.js. I am now going to play around with learning impress.js so that I can either modify or recreate this set of material for the presentation. The cool thing here is that it uses html5/css3 to create all of the effects needed for a really interesting presentation. I like this for a few reasons, one is that I don't need to deal with the very linear format of a pp style presentation and the other is that it will help me gain more skill with regard to css3 styling which I am weak at.

Window managers

I have been dealing a lot lately with trying to optimize my work conditions as well as my work throughput. One thing I have taken to is really looking for an optimal and minimalist user interface for development. I got very tired of the stock Unity interface on Ubuntu, so recently switched to XFCE for window management, as well as tmux and vi for a lot of simple coding. One thing that bugs me having spent my bioinformatics days on a mac is that the bar at the bottom of XFCE does not behave the same, so I end up wasting time opening extra terminals instead of switching to the terminal I already have. I might be able to deal with this through configuration. The other issue though is that I work in full screen VMs and that is where the little menu for virtualbox shows up. I am tempted to give Xmonad a try next week to see how that works out. It could fit my minimalist style. On the windows front I am using Dexpot to manage multiple desktops and assign different tasks to them. So far I have not really done anything heavy on this machine, however it will be an interesting experiment. This weekend I will be preparing my presentation using HTML5/JS/CSS3 so it will be a good first test. On the productivity side of things I am working on getting my typing speed up. I use to be a much faster typist, however all those years away from programming have done me no good. To that end I am using typing.io, a small webapp to practice typing code in various languages.

Thursday, September 20, 2012

New netbook...kind of

Last night hanging out with Andrew I decided to pick up a new netbook/ultrabook. I really don't know which it really is in all honesty. It is the Acer Aspire One, and seems to fit a land between the ultra low end netbooks and the ultra expensive ultrabooks. It has a dual core Celeron processor with the Sandybridge architecture, reasonable battery life, and capability for 8 gb of ram (which obviously happened immediately). This seems like a decent travel machine for projects, in addition to the setup that I mentioned in the previous post. Obviously not everything I do can be done from a tablet, such as the arduino stuff, android programming, and working with the kinect. Oh, and this little guy supports openCL. Lots of directions to explore. So now I have two different platforms going, so I will see how this works out. I think the first order of business might be to write a python implementation of the spigot algorithm for calculating pi. I will try using cloud9 for most of this, and then probably do some initial speed tests on the laptop thing using pypy. I am really interested here if the JIT can get it to outperform a well know C implementation such as y-cruncher. Also, this looks interesting http://www.adafruit.com/blog/2012/09/19/sneak-peek-adafruit-raspberry-pi-webide/

Tuesday, September 18, 2012

Hello everyone

So I decided that I need to get a bit more organized, and my other blog was too scattered with different things.  So I am creating this one to focus just on software with maybe a light smattering of hardware as well.  Hopefully I can get around to blogging more, and really using this as a personal note taking space.  Hopefully some of you will find this helpful as well, or at least interesting.

Yesterday I picked up a bluetooth keyboard to use with my Xoom, specifically to see how things go using this as a dev environment.  No, not coding directly on the tablet, but instead using various cloud services or network devices to do my coding on.  This way I am not tied to the physical device I am coding on, no setting up an environment, and I can always take it with me.  There are some inherent limitations here however.  Obviously I can't play around with the physical computing or NUI stuff this way.  For those projects I will be tied to a real computer.  Also, I will not be able to use any ol' tool or language that I want.  So hacking a bunch of Go or Processing is probably out for this, so again I will have to drop down to a real system for that.  However, where I think this might prove useful is for doing more web server programming, as well as light experimentation/playing.

So what are my options:

There are two ways I could really go with this.  One is to ssh into a box someplace on the cloud (rackspace/linode/AWS) set up my tools (tmux, vim, emacs) and just go to town.  This seems like a reasonable choice for a good number of things, especially when I need actual control over the libraries (numpy, twisted).  This has the disadvantages mentioned above.  Also, there is the setup time to get all the vim plugins just right, and install a vcs and get that all set to go.  Not a huge deal, but not a two second process either.

The other option is a browser based IDE.  This is kind of interesting, and worth exploring.  The one I am playing around with is Cloud 9 (www.c9.io).  They have a free account level, as well as a reasonably priced premium level should I ever need to go that way.  There is some good integration with Github and Bitbucket, which is great.  Also they have some tooling for collaborative tooling, deployment to cloudfoundary, and the such.  This makes it very attractive for server development, since I can just do stuff and push it out.   So, over the next few weeks I will likely be learning some node.js and doing everything in the cloud.  Lets see how this goes.