Friday, 27 January 2012

Managing emails without Outlook a PAIN!!!

There was a time when I was working in corporates and Exchange and Outlook was the hub of my life. And then I walked out of the corporate world...

It's been quite a while. For sometime, I was still on Outlook - but using a POP account... hmm.. formatting machines and a hard-disk (that had my PSTs) crash, made me look to the cloud. While I have been reasonably happy with GMail (with Google Apps for Domains), I miss the same workflow in an offline scenario...

All I want is my mails, tagged the way I like it all available offline as well. I would like to continue having the 'create an event' or 'add a task' features, the rules, and a sync of the calendar, tasks and notes... hmm... sounds like I need Exchange and Outlook :-)

Friday, 20 January 2012

Learning Microsoft Technologies on StudiDesk

On StudiDesk, we are offering content for learning Microsoft technologies. We are categorizing the same into a few tracks. As we go ahead, we would probably adding on a few more tracks.

Track 101 : BootCamp - is a focused track for fresh graduates who have just come into the organization. While they would need to know newer technologies, they also need to get their fundamentals right. As part of this they would need to be strong in basic algorithms, object oriented concepts, RDBMS, Windows Forms, Web Forms, ADO.NET and Visual Studio LifeCycle Tools.

Track 201 : DNCamps - is the track is that focussed on core internal .NET programming. This covers programming with WCF, Workflow Foundation, Security, Parallel Programming as well as language features of C#, VB.NET, C++ and F#

Track 202 : WebServerCamp - is a track is focussed on web developers who work on the server side. This looks at advanced WebForms, ASP.NET, IIS, MVC, Ajax, JSON, REST and WCF Services. Note that the WebClient and the DataAccess are separate tracks by themselves.

Track 203 : WebClientCamp - is a track that is focussed on the client side UX in the browser. This includes understanding browsers, javascript programming and other javascript frameworks like JQuery/ExtJS etc.

Track 204 : DataCamp - is the track that is focussed on data management and access - primarily with SQL server. This covers T-SQL, Data Access from .NET, LINQ and ORM tools like EntityFramework and nHibernate.

Other camps that are planned include the RIACamp for XAML based (WPF, SL) development, MobilityCamps focussed on Mobile development and camps for DBA, Cloud, Sharepoint and Biztalk

Our generic and very public camp - Camp91 will talk about technology in general and will focus on the latest happening in the tech space with a focus on Microsoft technologies. 

Thursday, 1 December 2011

Engineering vs Manufacturing

I have been interacting with a few companies with regard to their software development process. In most instances, I get called on as a technical mentor to review or help out on some design issues. But in almost all the cases, I see that the team is quite competent on the technology, but the output is still far from being optimal - there is a notable breakdown in the process.

As I think through it, I would attribute this to an engineering vs a manufacturing mindset. An engineer - in his lab - loves to solve complex problems involving science. He would love to build a car, design a component or even write some code to solve interesting problems like figuring out the difference in working hours across 2 locations in different timezones and with different working hours and holiday calendars. A manufacturer on the other hand, takes over from the engineer and gets a shop floor full of people to roll out a few thousand cars a year. The assembly workers might not have the ability to design the car, but their skill on putting it together is unparalleled. There is of course another category of users - scientists - who work on abstract concepts without even getting to the engineering of it.

When we move from the board to the lab to the manufacturing floor, we need a completely new mindset. On the shop floor we are not necessarily interested in the design (it is important, but we are past that stage) - but we are interested in making it easy, error free, repeatable and efficient. In order to get to this, we might actually have to let go of a few 'excellent engineering choices' (Tata considered a plastic body for its car - that Nano. But storing, painting and assembling plastic was so impractical that they let go of it).  What we need is a delivery engine. While the labs design - make or break - the product, even the best of products come out duds if the delivery falters.

Is the car responsible to get you to interesting destinations? Maybe not. But if your car breaks down - you dont get anywhere!!!! A strong delivery engine is just the same.

Friday, 11 November 2011

StudiDesk Notes - Part II


We also decided that StudiDesk should be a desktop app. For all the work that we do on the web, the desktop provides a more focussed environment for learning. I find that the ability to browse to another site very distracting when I want to learn something or finish some work. But once done with some work, I'd love to browse around for more information. Being on a desktop, we got the benefit that we could work in low bandwidth areas and we could even work offline. StudiDesk however is not supported offline as it looses its tracking features which makes it ineffective.

With these thoughts in place, we have designed StudiDesk as a social learning platform where we can share notes, articles and videos. We have also spent a lot of time in fine tuning the video generation process. Our videos do not target to be 'impressive' - they target to be correct and fast. We use a paid text-to-speech engine to create voice-overs for our videos. They dont have animations. They have tons of screen-shots of actual working code. And they have pretty accurate details about topics. When needed, we can switch to a video with animations and a human voice over. But it takes a LOT of effort to get out videos fast with that. So in the initial phases, we have compromised (!!!) eye-candy features in favor of getting it out there and being useful. 

StudiDesk Notes - Part I

Guess we did not make the 11.11.11 date. But we are that close to getting out a version of StudiDesk that I'd be quite comfortable with. So what are the features that I like in it and what are the things that (in my mind) are still pending to be done.

StudiDesk has always been targeted at people who'd have really low system configurations. We're talking of Celeron systems with 128MB RAM (oh yes - they still exist), a low bandwidth connection and a Windows XP operating system. The only requirement that we added on what that it should have .NET 2.0 (which does not come pre-installed with XPSP2). While it was soooo tempting to move to WPF or Silverlight, there is a large community (in remote areas and colleges who are living with donated computers) that still exists on this baseline. And so we painfully declared that this is the minimum system requirement.

While it works on Vista/Win7/WinServer 2008R2 on both 32 and 64 bit, it does not leverage any new features and the target framework continues to be .NET 2.0. For sure, we'd want to build the next version compatible with tablets - while making it compatible to Win8 Tab is the easiest, I'm guessing that Android would cover a more wider audience. 

Tuesday, 8 November 2011

Architectural Tenants for 2012Q1

I started this post as a thought of recommended Architectural Tenants for 2012 and realized that things change so rapidly that I would probably not keep these thoughts beyond a few months... hence the Q1 :-)

Obviously there is no single solutions that fits all. So lets make a few assumptions :
1. We are looking for an architecture leveraging Microsoft Technologies.
2. It is a simplistic project being developed from scratch.

Given the above, I'd lean heavily towards the architecture defined in Microsoft Project Silk. There are few aspects of this that I really like and that I think makes it to my list of Architectural Tenants for 2012Q1.

Tenant 1: Think of solutions for tablets.
Most solutions for tablets would also work on desktops. But they can also be morphed into solutions for mobile devices. Keeping the form factor aside, design all solutions so that they would work on tablets. My definition of  tablet is one that where the user does not sit at a desk to use. So they would be on battery, would be mostly connected to the internet via WiFi or 3G, would also occasionally be disconnected, could have external devices like webcam, gyroscope and Geo-location that can be leveraged and so forth. The app should - where ever possible - leverage these local capabilities.

Tenant 2 : Build web based solutions.
I believe most applications should be web based. Even with the talk of iOS, Android, Metro UI (for Win8 and Mango), I think that most applications are well off starting off as web applications. Does this contradict Tenant 1? Well not actually. As its not practical to build a common solutions for the various devices (ObjectiveC, JavaScript, Silverlight!!!), it makes sense to build web based solutions that render themselves according to the device. Wordpress has done a great job of build themes that are specifically tempered for iOS.

Tenant 3 : Build Single Page Apps
Single page apps use a strong JavaScript framework to do most of the UI related work on the client side. A Single page app essentially mimics a Winforms app - Each page is like a form and holds on to the context locally till we 'close' it. In order to understand this - think of a scenario. We'd like to search for an item in the list - which is displayed across multiple pages. Once we select an item to read/edit and complete working on that item, we would like to come back to the list at exactly the same place where we left it. That's the problems that are solved by designing Single Page Apps.

Tenant 4 : Build Async Request Handlers
We like synchronous operations (we like to click a button and actually wait till the 'save' is DONE). But unfortunately, the servers can't scale this way. In fact, most cloud computing designs automatically incorporate an asynchronous mode of operation. In this metaphor, whenever the user chooses to 'save' or 'post' an action, the action is logged into a queue with a token. The server then performs the entire operation based on the token and once done, reverts back to the user with a message against the token. This enables the solutions to scale vastly on the server side.

Tenant 5 : Design for Long running transactions
Transactions are gradually becoming old school and the reason is that the data is getting distributed. In such  a case, solutions like Biztalk introduced the concepts of long running transactions which are essentially an application based process of 'undoing' what was done as against the concepts of 'rollback' in transaction based systems.

Tenant 6 : Design an offline data store.
Whenever I has asked users - would your system need to work offline - the answer is NO. Tablets and mobile devices are always connected through 3G. But even so, there are areas of no connectivity. Operation rooms, storage areas, elevators, parking lots and whole lot of places might affect the network connectivity. A strong requirement is the ability to continue working in such scenarios with the option to 'sync' or 're-connect' when the network becomes available. In some case this can be for extended periods (think of the time in flight).

Tenant 7 : Use Flow layouts.
Microsoft is moving to a "Metro" style UI in Win8. While this was surprising, I think that this marks a move to a flow layout. All Windows apps in VB/C++/Winforms or WPF were essentially a canvas layout that could track your mouse position (They get Mouse_Move events). In contrast, flow layouts like Office apps like Word, browsers that use HTML etc use a flow layout that re-sizes based on the text being rendered. While the canvas layout is important for games and rich editing, the flow layout is more pleasing to the eye. With "Metro" Microsoft is signifying a move to a hosting a canvas inside of a flow layout instead of the reverse.

In my opinion, these are a set of tenants that I think will stand in good stead at least for the first Q of 2012. In the subsequent posts, I will talk about each of these in more detail and will also put up videos for each of these 'Tenants'

Saturday, 5 November 2011

Re-launching ourselves.

Asthrasoft is being relaunched as a technology consulting company that provides 3 primary services - Academy which provides technology training, Consulting which provides technology consulting and Engineering which offers software product incubation services. We have been doing this for sometime, but now we are refreshing our offerings around an online platform - StudiDesk. StudiDesk is essentially an online content service, but it is organized to be much more than that - we call it our Social Learning Platform.

The re-branded Asthrasoft services and the latest version of StudiDesk goes live on 11.11.11. Stay tuned for more details about Studi-Desk and how the 3 legs of our services (Academy | Consulting | Engineering) will leverage the same.