Friday, June 10, 2011

Is that a cloud, or is it a storm?

I was recently forced to spend some time at a hospital due to a bowel inflammation. The inflammation is due to a chronic disease whose cause is still unknown. It's also not clear whether there are non-surgical treatments to completely cure the disease. I won't go into details in this post, suffices it to say the event has distracted me a bit from my usual focus on games, Xbox360 and XNA.

Let me start with a few words about nutrition journals. Although there is little scientifically established information about the link between food types and inflammations of the digestive tract, many patients report that specific diets do help. The problem is that there does not seem to be any single diet that fits all.

It is therefore important for each individual to assess the effect of each food type on one's digestive system. Any good programmer knows it: before you optimize, you need to measure. The same goes for nutrition. Before doing changes to one's regime, it is important to keep track of what goes in and, well, what comes out.

The difficulty is that keeping such a journal requires discipline, as it's best to record that information as soon as meals are eaten, and directly after visits to the bathroom.

This is were mobile devices and the net comes into the picture. Smart phones make it easy to fill in the journal. The journal itself is probably best kept on a central server (in the "cloud") in order to be accessible from anywhere at any time through any device.

All of this is a good excuse for me to start having fun with WebSharper and F#, of course. WebSharper makes it possible to design web applications entirely in F#. The client code is compiled into javascript and executed in the browser.

The recent panic about .NET and Silverlight being dropped from Windows 8 is interesting in many aspects. .NET developers are reluctant to switch to javascript, a feeling I share and understand. The current tendency however seems to use javascript as a virtual machine targeted by a range of nicer technologies. Examples include F# through WebSharper, XNA, emulators... I for one rejoice in Microsoft's adoption of open standards.

But do I? I see Windows 8 as an attempt to regain control over the Web. What place will have competing web browsers (Firefox, Google Chrome, Opera...) in the new operating system when it includes it's own browser as a mandatory component? If the web view of Windows 8 succeeds in pushing out other browsers, Microsoft will be free to invent new technologies, forcing others to play catch up. Are we getting back to the Windows 98 and "optimized for IE6" days?

Happily, I don't see that happening. Non-Microsoft smart phones and tablets have conquered large portions of territory once owned by Microsoft and Intel. Hopefully HTML5+js will gain adoption and proper support across all platforms.

Note that the irrelevance of platform-specific technologies such as Silverlight applies to others as well. Why keep making iPhone and Android apps when you can make a web app instead? Are the specificities of GUIs compelling arguments to redevelop client apps multiple times? Will users be willing to pay for apps when free web apps become ubiquitous?

We can turn to the PC platform to find hints of answers. The computing power they offer still has no equivalent in the cloud, and demanding applications such as development tools, CAD and video games will always feel best at home on a PC. I expect those applications to keep being developed using a mix of native and VM-based languages and frameworks.

Is there a similar place on the smart phone? Applications requiring unrestricted access to the mobile's resources come to my mind. This includes media players, games, device management... I expect however that a very large eco-system based on "silly apps" will soon disappear, possibly in a very sudden manner.


Denis Markelov said...

Hi Johann.

By "... eco-system based on 'silly apps' will soon disappear ..." you mean it will be replaced by 'silly web apps', right?

Joh. said...

Dennis, yes that's what I was thinking :)

Brandon Peters said...

Hello, sorry to hear about the inflammatory bowels. I've had Crohn's Disease for 10+ years and you're right about the "individual diet" thing. I've not spent any time talking about particular diets with anyone online (and there are few people with Crohn's/IBD that I know personally) but there is at least one thing I bet is universally bad across all sufferers: coffee. Coffee irritates the bowels like nothing else, it seems, which is a bummer for programmers like us. Anyway I also wanted to point you to an Android app I recently downloaded called GI Monitor. I've not really used it but it is designed to help you track your movements. Good luck and thank you for the blog! I love me some games and also F#.

Joh. said...

Brandon, Thanks for the tips!
I've also been suspicious of coffee myself. However, I've also been suspicious of gluten, cow milk protein, soy, sugar... The list goes on.

I've started using GI Monitor today. The app looks interesting, but I would have preferred a web page accessible from any device.

It also lacks the ability to track one's weight, a surprising omission.

There is in other words room for improvement, which from a programmer's point of view is good ;)

rei said...

I'm in the same boat yo. Had a stomach ulcer since I was around 10, and even when that's settled, I still have mild IBS to deal with.

The worst part is that both sleep deprivation *and* coffee set it off, so I really can't do coding marathons at all.

Coke messes me up too, due to its caffeine content. It's worse than alcohol for me, in fact. Most other carbonated drinks seem to be fine.

You should consider adding a lot of fiber to your diet. That's known to be effective in mitigating all sorts of GI problems. It definitely helps for me.