Weebly Update
I use weebly to power my website that provides information about my android apps. Weebly is a free online website creator and viewer.
I have been using it for over a month and so far have mixed feeling towards it. First the positive, the free version is great all they require is a “powered by weebly” footer. Zero cost is what attracted me. It was very easy to redirect spiderflock to point to it, weebly provides quite detailed instructions on how to do this.
The templates for the sites are quite numerous and there are plenty there I like. You also have full access to the template to alter them as you want. In fact the whole website set up is a smooth affair.
For general website creation I found the actual text input slightly errr, I am struggling for words. It just does not quite flow smoothly. The idea of dragging paragraph objects around and having to have seperate paragraph with a picture objects just does not feel correct. I, and most people?, want to enter text in a way the is closer to the word processor/ text editor paradigm, the way it works reminds me of old DTP packages I once played with. Perhaps it follows the way Dreamweaver works? Not having used it I can’t comment.
That is the only negative things I have hit on so far but I do hit it every time I use the site. Having said that weebly is developing at quite a reasonable rate and while I doubt they will change the way the text is added to a page one can hope.
So overall I have mixed feeling but mostly positive ones about weebly.
All Blogs Evolve.
Over time blogs evolve. I originally created marblemice.com as an article site powered by Joomla. The as I realised how time consuming it was too write good articles I gradually converted over to a blogging approach to a website. This eventually led me to install wordpress rather than using Joomla. While I do have the occasional gripe about wordpress it has served its purpose quite well and I have not been tempted to another platform.
I would still love to do a programming article site but I think I would have to do it with a group of friends, partly to help with motivation and partly to fill the site with interesting articles at a faster rate.
Until very recently I laboured with the idea that advertising on marblemice to actually generate a reasonable income. Given the niche topics and people interested them are resistant to advertising it is a fools errand to expect income. Writing article on the subjects I cover is a waste of time if I expect financial reward from it, my effort would be better spent improving my android applications. But deep down I do write the articles because I want to write them
“Wow, this guy should get to the point!”.
Yes I am getting there don’t worry! This blog is evolving in the sense it is going to become more like a blog. That means more posts with my thoughts rather than with technical details. I still want to write technical articles but the ratio of pure tech post verses these sort of figure things out post is changing. Well has changed if you look at this years posts.
“Is that the point?”
Yes I think it is I think. So far my changes have been
- Reduce the advertising to one small box.
- Reduce the number of “another version” posts for my android apps.
I took the android app related stuff to a blog spiderflock where people who are interested in the latest version and plans for the apps can find the information in a logical place and not interspersed with posts about Haskell. I will still of course talk about Android but at a slightly different level to what is covered on spiderflock.
I am not sure if this will mean more or less posts, I will let you know at the end of the year. Given poorly thought out post containing my views are much easier to write than technical posts I suspect the post count will increase.
That is it, you have been warned this place is evolving and to be honest if you read regularly you will have noticed the changes in the post topics anyway.
Sharpening The Axe Or Chopping Down Trees
“Give me six hours to chop down a tree and I will spend the first four sharpening the axe. “
Abraham Lincoln
In creating software I am not sure you should divide you time accordingly. I am from quite an acadmeic background and very much enjoy the sharpening part. However having been steeped in industry for a number of years I also enjoy the getting things done.
So how do I split up my spare time between all the fascinating things to learn and the get things done part? I am, of course, talking about my free time, that is the little slice of time after family time/work/exercise and socialising. Compared with many of my friends I do actually get a reasonable amount of free time.
In the free time that I am using a computer I would like to spend it doing these things.
- Learning and discovering new things
- Applying what I know to create stuff people want to use and in the process prehaps make a small profit/income from it.
- Create this blog and partake in a few forums.
I think this is pretty much similar to a lot of technical people/programmers and like many I used to make the classic mistake of focusing on many things at once. A recipe that leads to getting sidetracked and never completing. It is of course fun. To avoid this I now alternate my days.
On one day I do stuff, learning/experimenting and writing blog posts. Think of them as free days. If I ever get the urge to write a compiler again it will be fit into my free days as it is not something that a profit can be generated from.
On the next day I do product stuff and I think of them as business days. Basically the idea is to get to it and produce stuff that people will want to use. Logically the are called Business days as these projects have a hope of turning a profit.
Alternating days seems to be the correct balance for me. I am slightly flexiable and occasisonally allow “Business” days to roll over into “Free” days. If I don’t work at my computer one evening which ever day it is carries until the next day. Since starting this system about 10 days ago it does seem to be having a nice effect on my productivity.
I also tend to use my lunch hour for learning haskell. Well a couple days a week that is. The other days I take walks in the local park or run errands.
There you have it my current strategy for getting things done while not allowing the axe to become blunt.
The Free Lunch
I recall reading somewhere optimising compilers had not really been worth the effort. Excluding numerical based programs, the average performance increase over the last 20 years had been something like 3 or 4 percent per year due to compiler improvements. Given CPUs ability to calculate doubles every 18 months, the 3 or 4 percent per year is really lost in the noise.
The other day at work this was driven home when I got hold of a new computer. Yes a shiny one. I work on a numerically intensive application that has to run over very large data sets. The new computer easily ran circles around my ageing computer. To get that sort of improvement profiling and optimising the code would have taken at least a couple of man years if not more.
We can add an awful lot of features and fix an whole bucket of bugs with those man years. I know even a 10% performance increase, spread across all our users would be a welcome thing. Trouble is most of our users are commercial outfit on a 3 year upgrade cycle. Even if you improve performance by 10% a year it is lost in the noise of the performance increase of CPUs over the years as users upgrade.
Until today it had never really been driven home to me how insignificant eking out the last few drops of performance of well written code was. Little wonder as we have moved to multicore the term “Free lunch is over boys” was banded around.
To get the free lunch back you have to get your app to scale with n cores and that is hard to do. In someways this post is about 5 year late.
Notes:
- Numerical based programs have apparently benifited greatly from compiler technology. The compiler optimisation techniques work better for this type of code. I guess that makes sense as this sort of code is more likely to contain loops and benifit from variable lifting and function inlining.
- I say well written code in the body of the text. If you algorithms have a O(n^9) dependence no amount of hardware will save you!
- I don’t have links to the paper discussing compilers not being very effective. I am sure search engine will have you if you are interested. Don’t sweat too much as blogs are full of claims/discussions that are not instantiated.
Deployment And Programming Languages.
A few years ago I used to pick a language to learn by just messing with stuff I thought was cool. These days when I look at a language I also look at how it is deployed if I expect to do anything useful with it.
On one hand C does not have any of the modern features a programmer expects from his language (although I do find some perverse joy when coding in C, perhaps there is so little to remember about the language) but one thing you can say about C and its bigger brother C++ is you can deploy nearly anywhere. Want to make a desktop application/game, yep you can use C, want to make and iphone or android app? Guess what you can, well you need to write a little bit of wrapper code in Java or objective C. Perhaps the only place where C does not go is inside the browser.
Java does not do to badly either. It can deploy to desktops, to a whole load of mobile phones including android. It is possible to deploy to iphones as well (in a limited way via a bytecode translator). You can deploy to the browser via two mechanism, applets and GWT. Overall not to bad.
JavaScript is limited to the browser, but that does mean write code that can target mobile phones and desktops for practically and operating system. Giving it a great deal of flexibility.
Haskell is a lot more limited. Pretty much you are limited to desktops. There have been a few experiments converting to Javascript or compiling to the JVM but as far as I can tell they were experiments that are not really maintained. So pretty much for haskell you are pretty limited to desktop style applications. I tend to look at haskell as a well of exploring algorithms and as an aid to learning things or experimenting with ideas rather than an industry language to be used for code that will be used by others