Wednesday, January 10, 2018

Ripple up, Ripple down!

So now they are saying Ripple is dead. All the running around, trying to buy Ripple is now futile. Really?

What they fail to understand is that Ripple - the "currency" and Ripple - the "technology" are two discrete things.

Satoshi must be turning in his grave looking at his creation being monkeyed around by bunch of "gold digging" idiots. (And dont tell me he/they can still be alive). Bitcoin had three main objectives as a currency.
1. Maintain a secured ledger
2. Keep transaction fees low
3. ‎Finalize the transition quick.
The core objective was never really to become a trading instrument. Today, it survives as a superior ledger, but is suffering from all old age ailments. CoinMarketCap would disagree, but from a technology standpoint, it is indeed true. It has reached its shell life in terms of its journey as an alternative currency. It can no more compete with the Fiats. It is not cheap on transaction fees, nor quick.

On the other hand, blockchain is the future. In the coming few years, there will not be a field that blockchain will not grace. The concept is so elegant that it will find its way into our daily lives in every sense. Be it IOT, financial transactions (not just interbank like Ripple), real estate, IP/copyrights - there are 200+ real life application areas that are being explored. Though the visibility of the commercial side of blockchain is higher (read ICOs), there is indeed a lot of technology research taking place right now. At the very least, the ICOs are bringing in a lot of funds upto the techie.

Back to the Ripple story. The "currency" Ripple may be considered as just another moolah raking instrument. It has remote connection with the "technology" Ripple and the real-life problem that it is trying to solve - making inter-bank transactions quicker and cheaper. (btw, the role of Ripple is only to cover the transaction fees in the Ripple network). Ripple now has the presence, association and commitment of a few majors in the banking industry. So the technology Ripple is here to stay. At least, they will make sure it stays (shareholders stake).

A closing anecdote. The market that Ripple is trying to enter into is currently monopolized by Swift. So in effect, Ripple's revenue could become equal to Swift's current revenue in some time (assuming 100% market share). Maybe a little more owing to the superior transactional capabilities. But where did the current Ripple currency market cap of  $100 billion come from? What projections are these?? And what is the basis???

Doesn't matter as long as the market is performing, does it?

Thursday, July 21, 2016

Beginners Tips for Pokémon GO


1. Collect the Pikachu at the start - ONE chance (Tip #5) 

2. Do not waste your Stardust at the begining of your game. You will need them to evolve the higher CP pokemons later. So dont evolve/power-up early on. With each level up, you will be capturing pokemon of higher CP automatically.

3. Collect ALL kinds of Pokémon along the way, even if you are repeated by getting them. The most collected Pokémon, which you think is a waste right now, will evolve the most as you are collecting the specific Pokémon candy as well.

4. At the end of level 4, you will get to chose a team - Red, Blue and Yellow. It is still not clear which team is the most efficient/quick, but it helps if all your friends join the same color team.

5. Check out the Pokémon Evolution chart here. This chart details out every Pokémon and its evolution path.

6. Here is the Pokémon rarity chart maintained by Reddit users.

7. Pokéstops refresh every 5 minutes. So if you have some time, choose a place that is between 2, 3 or more Pokéstops and keep rolling!

8. There are some real-time interactive maps (like Google Maps) available that shows you where Pokémons are being discovered (1, 2, 3, 4). They are not reliable enough.

Wednesday, July 20, 2016

Getting Started with your First Pokémon


Quick Tips:
1. Pokémon GO is not yet launched in many countries like India. You can still join it by downloading the APK here and installing it in Android Phones. It is a 58+ MB download, so be patient. For iOS, the processes is slighly more elaborate as explained here.

2. Once installed, create a new Trainer Profile in the app and play the game.

3. The developers of the game disallow GPS spoofing (fake/mock your real GPS location). In the beginning, you may get a message like "Failed to detect location" even if your GPS is turned on and set to "High Accuracy". For Android phones, go to Settings. Scroll down to About Phone/Device. If developer options is not enabled (it is not enabled by default), tap on Build number 7 times and developer options will be enabled. Now, go back to Settings, and go to Developer Options, there will be many options but you need to disable the Mock Location option.

4. Alert: The app is still full of bugs. The most common being the "Freezing" of the Pokéball. You will have to live with the frustration as of now till the developers fix them. Also at times, there is "Server Overload" due to the games' increasing popularity. The developers are said to having tough time adding server capacities. If in case the game freezes, the best bet is to wait for a few minutes and then close the game completely. Start all over again, mostly likely the Pokemon is actually captured and would appear in your PokéDex and your Journal. There are many tricks suggested by players to solve the problem, but none of them are foolproof.

5. You will get ONE chance to capture the cutest Pokemon of all, Pikachu. After logging in, you will immediately be greeted with 3 Pokémons. DO NOT capture them. Walk away, in any direction. After a distance, the same 3 Pokemon will appear. Again, DO NOT capture them. Walk away. This would continue for 3 more times. On the 4th/5th instance, Pikachu would appear. Capture it and enjoy!!

Tuesday, July 19, 2016

All you wanted to know about "Pokémon Go"


So whats new and trending... Pokémon GO! That's the famous anime series now in the augmented real world. Is it possible for a new app to take over the heavyweights like WhatsApp, Instagram, Tinder, Snapchat and Facebook? Yes, but in couple of weeks time? Pokémon GO has surpassed the likes in terms of Daily Usage on Mobiles, proving the "openess" of the social media space. Though the app is still full of bugs (read crummy product), its not a fad anymore... it has become a "global phenomena". 

The Game
Pokémon GO is a
- free-to-play
- location-based
- augmented reality
- mobile
- game
developed for iOS and Android devices. It was first released on 6th of July 2016. Making use of GPS and the camera of compatible devices, the game allows players to capture, battle, and train virtual creatures, called Pokémon, who appear on device screens as though in the real world. It is a "freemium" game - a free game with in-app purchases of additional game-play items. An optional companion Bluetooth wearable device, the Pokémon GO Plus, is planned for future release and will alert users when Pokémon are nearby.

The Backing
Pokémon GO launched for iOS and Android on July 6. The app was developed by mobile app developer Niantic but distributed by Nintendo’s Pokémon arm. Nintendo owns about 1/3rd of the partnership. Since the launch of the game, its market valuation soared to more than $40 billion, passing Sony - quickly becoming one of the most valuable gaming companies in the world.

The Effect
First things first, Pokemon makes you walk. So its good. In order to go higher in the game, players have to walk in the real world. But on the other hand with more attention towards the mobile devices, teen are falling off cliffs, getting hit by cars, light poles and what not. There is even a robbery and a death reportedly caused due to Pokemon GO play.

With hordes of people getting addicted to this game every minute across the world, there are people leaving their full time jobs to become trainers for the Pokémon trainers. Not to mention, a few companies have sprung up to encash the Pokemon movement.

On the lighter side, most churches, temples, mosques have now becomes Pokemon Stops or Gyms, where you need to come again and again to collect goodies required to take the game forward. That's one way to bring people closer to god :)

Business Openings
Tremendous opportunities are opening up for global as well as local businesses. Your "nearby" restaurant is now a PokéStop where you can spend time as well as grow your XPs. McDonald is planning to sponsor all their outlets as PokéGyms. Businesses have started offering free "real world" merchandise promote time spent on the "virtual" game play in their premises.

Friday, June 14, 2013

And now unlock your protected Powerpoint Slideshow file


Sometime back, I wrote a post on how to unlock (your own) VBA password protected Excel file with simple tools. More importantly understand how Microsoft organizes its files on the disk. Here is one for a Microsoft Powerpoint Slide show file - recover an editable copy of a protected ppsx file (or similarly a protected pptx file).

Just as we did with the Excel files, lets investigate how Powerpoint stores it file contents on the disk. Create a new Powerpoint Slideshow file MyTest.pptx and enter some dummy content. Choose to file as [ppsx]. Let us now protect it by hitting the [General Options] (from [Tools] in the [Save Dialog]). Set a very complex password. We are safe now. The Slideshow file can be distributed without the contents being stolen.

Going by our earlier experience, we rename our file from [MyTest.ppsx] to [MyTest.zip]

Open the Zip file now.

Not going into details, let us open the folder [ppt]

Drag out the file [presentation.xml] into a folder. We can now view the contents and edit it.
Lets look into this file. Amoung other things we notice that a new node has been added into the xml (as compared to a unprotected file).


hmm...
Seems like the salt and hash of the password we had set. What the heck! Lets delete the node altogether.

Save the file and replace it in the zip file (drag and drop it into the open zip file collection).

Save and close your Zip file. Rename it back to [MyTest.ppsx]. Right click the file and select [New] to open the file in good'ol Powerpoint.

There it goes again. We have an unprotected copy of the Slidehow file that we had created earlier.
Enjoy!!

Friday, May 10, 2013

Limited only to imagination... IGL


IPL - the grand success. Being repeated year after year. Whether you like the new game or not, anything that makes money rolling is 'good'. Even inferior product owners are going home rich riding on the IPL wave. So successful that other countries are following suit with their own Country Leagues. With the dawn of every IPL season - economy booms, share market bulls and not to mention rising spirits of the countrymen and women (at least they have something to talk about - hearty communication are so rare these days).

Now let’s analyse what went right. More importantly, can this success be repeated with something else. Think out of the box. Shed your inhibitions.

Presenting the Indian Goti League…

For the more 'cultured' population, 'Goti' is a game of marbles, typically played on the streets. Many consider it uncool, uneducated, LS. And thats ok. Its a free country, isn’t it?

What makes IGL worthwhile. For starters, it’s a great sport. People who have played it, would vouch for it. There is passion, there is stake, there is strategy, there is tragedy, there is vibrance, there is pain, there is allegiance, there is intensity – a game of Goti has all elements of a block buster.

Next, especially for the doyens of our society, the roots of this game are pretty close to us. Going by the historians, it likely started in Harappa and Mohenjo-daro. Yes sire! But then, could a game like IGL go global? Yes, that too! Goti was played by the Romans and Egyptians. Matter of fact, it is widely played in Canada, Australia, United States, Germany, Taiwan apart from the alleys of Urban India. Goti even has a world championship hosted in England every year since 1932.

Now that we have the teams and the players, the next is the audience. Lets see. If the daily soaps and reality bites have got our country men and women hooked, a ‘fierce’ game Goti can surely be a good bait. Give them something remotely interesting and challenging with a dash of ‘color’, they will make it their religion.

Next, ‘show me the money’! Going by the lines of IPL, advertisers are today willing to shell out dough like the end of the earth. They are ready to cough out any fees, just to get ‘your’ 5-second attention. Events, merchandise – money rolls everywhere. Are they really interested in the context (the game)? No. Their interest is only on your attention span. You, on the other hand, would be surely excited about your national game.

Sportswear companies would roll out finger bands, instead of wrist bands. New camera angles would be devised. On-Stump camera would be replaced by In-Hole camera. Fingers would now be insured instead of foots and arms. Possibilities are endless, limited only to imagination.

Now lets look at IGL from another angle. The ‘best’ players of the game are the so-called gundaas and mawalees (read, the dark alleys of our ‘gullies’). We are gonna give them to a chance to go ‘legit’. The younger generation would focus their attention towards ‘making it large’; and the elder generation could just as well be that ‘kick-@$$’ coach. Most of them would trade their gory professions for ‘the’ IGL and its associated glory. Imagine the ‘new society’ that would be born from this change. Mothers would not scream at their kids for playing Goti, instead fuel their ambition by providing long undisturbed practice sessions. IGL could one day fully cleanse the world of its grim. Now that’s what we call a ‘Catalyst of Social Change’.

Friday, April 1, 2011

Gmail motion ...

Usually when Google introduces something, they means business (well :=) except for 'wave'). I just noticed the new offering from Gmail called 'Gmail Motion'. At the outset, dont go by the name... that probably is not the best. But looking into what it is, makes your eyes open up. You immediately know that it's the step of computer usage. Though Google says it has been working on it for a long time and has tested it, I still havent concluded whether it is a great product. But one thing is for sure... the technology holds a great promise and it HAS future. See for yourself (see the video first).

Thursday, March 17, 2011

Did u hear about the "Asians in the Library"?

Youtube... a medium to express. Proving beyond words... here is an episode that really got me hooked.

A few days back, a student at UCLA California uploaded a video... a message with a purpose... an opinion. Within hours there were party poopers, comedians, john "lay-on-the-couch", musicians, "the-girl-next-door", martians... a whole of people policing what she says. What was interesting though (apart from the opinion itself), this global medium threw open gates for discussion, counter attacks and creativity.

Enjoy the ride below and see how the internet today unites people from varied backgrounds and interests into one common platform of thought.

Here is the original video posted by the lady student.



And this is what happens next. Do go up to the last embedded video... u'll enjoy it =)

First a spoof...



Then another interesting one...



By far the most creative ones :) ... urge you to see it in full screen and with good speakers or headphones!



And the REMIX!!



Some serious arguments



Some lighter ones...





And finally this...



can be found here on abcnews.

And the others... nevertheless ;)

http://www.youtube.com/watch?v=8w5-2_E_PgE&feature=related
http://www.youtube.com/watch?v=zAM4Ym1UjAA&feature=related
http://www.youtube.com/watch?v=P16lkPvm0B0&feature=watch_response
http://www.youtube.com/watch?v=_LO2YOBxm_Q&feature=related
http://www.youtube.com/watch?v=ulPDxO6vz8Y& (radio talk show)
http://www.youtube.com/watch?v=8w5-2_E_PgE&feature=related
http://www.youtube.com/watch?v=eKpf9YT4x8o&feature=related
http://www.youtube.com/watch?v=nqqvlXasBfk&feature=related
http://www.youtube.com/watch?v=PV7oSnXp3yQ

ps. The guy on the guitar was Jimmy Wong. Here is another of his works ... no instruments used !! :)

Monday, August 16, 2010

Playing with Excel Worksheet Change event

Workbook sheet change is a very good place to put your code if you want to track user actions. Depending on user action, you may want to write validations or database round trips. It can also be a substitute for "formulas" if written correctly. But it is easy to overlook scenarios and user interaction patterns, and make mistakes in coding.

A good way to begin is by creating sub routine to manage your operations on the Excel sheet. This is a global sub that can be called to set when some "controlled" system operations are going on. (System = your code).

The following code can be placed in a public module.

Option Explicit

Public bSystemUpdating As Boolean, oLastCalulation As XlCalculation
'Flag to indicate start of system update

Public Sub ManageSystemUpdate(bStartUpdate As Boolean)
If bStartUpdate Then
    
    If bSystemUpdating Then Exit Sub
    'Exit if update by system already started
    
    bSystemUpdating = True
    oLastCalulation = Application.Calculation
    ' Store Calculation mode for reseting when done
    
    Application.Calculation = xlCalculationManual
    
Else

    Application.Calculation = oLastCalulation
    bSystemUpdating = False
    
End If

Application.EnableEvents = Not bStartUpdate
'To disable Excel events like Worksheet change

Application.DisplayAlerts = Not bStartUpdate
'To disable Excel alerts like "Delete Sheet confirmation" etc

Application.ScreenUpdating = Not bStartUpdate
'To disable Excel screen updatation... Excel will update the screen on completion of your routine

End Sub

What next? Now we take the "Workbook_SheetChange" event and add our custom code into it. Remember, the "Workbook_SheetChange" event gets fired everytime any change happens to the cells, i.e., including your code. So it is important to manage the re-firing of these events in case you make updates. This can be done by setting a global variable to flag the start of a system update.

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Application.Intersect(Application.Range("Sheet1!A:A"), Target) Is Nothing Then
    'Only if any cell in the column "A" changes
    
    FetchFooValues Target
    
End If
End Sub

Public Sub FetchFooValues(oRange As Range)
Dim lCtr As Long

    ManageSystemUpdate True
    'Disable all events as well as all updates and calculation by Excel application
    
    For lCtr = 1 To oRange.Rows.Count
        Application.Range("Sheet1!B1").Offset(lCtr - 1).Value = FetchSingleFooValue(Trim(Application.Range("Sheet1!B1").Offset(lCtr - 1).Value))
    Next
    
    ManageSystemUpdate False
    'Enable all events
    
End Sub

Private Function FetchSingleFooValue(sInput As String)

'Do some operation here
FetchSingleFooValue = sInput

End Function

All done!

Thursday, August 12, 2010

Excel Template

Time and again, we create new Excel files with VBA, and end up rewriting our prized VBA codes (or copying pasting at best) that could be reused. Some of us have our own sleeveful of Excel files containing VBA codes.

There are some good ways of organizing (and growing) them. The most obvious way would be something like in Word... "normal.dot". In Excel unfortunately, such a thing does not exist. But we could do something close. Make a template file that could be used as a standard from the default "New Workbook" dialog.

Write the VBA codes in a new Excel file and save it as a Template, say "My_VBA_Template". The VBA code could be written anywhere as usual - as new modules or written as workbook/worksheet events.
Remember to save the file as a "Macro-enabled Template (.xltm)". You can now place the file in any of the following locations depending on the usage:
  1. C:\Program Files\Microsoft Office\Office12\XLSTART\  -or-
  2. C:\Documents and Settings\<user>\Application Data\Microsoft\Templates\
Now start Excel normally and open a new workbook. Choose the "My Templates..." from the access panel.

From here, choose the your template "My_VBA_Template".

A new file with the embedded macros would be created "My_VBA_Template1" (just like "Book1" normally).

For all future uses, a good thing is that, your templete would appear in the Recent Templates section and hence much easier to access.

Happy Excelling!

Wednesday, August 4, 2010

Unlock a VBA password protected Excel file

Ever felt the need to open a VBA protected excel file... maybe one of your old files that contained an excellent routine! How do you come out of that pain?

Important: This article is for educational purposes. Try this method for opening ONLY your own files, as I did too!

So how does Excel store the file contents - cell data including formulas and formats, conditional formatting, VBA code, etc. etc. Lets investigate. Create a new Excel file MyTest.xlsm and enter some dummy test data in the first sheet. Add some formulas and conditional formatting (if you want to really understand the details).
Let us now see how excel stores this data in the file. Open the file in notepad or a hex editor. Did you notice the first 2 characters? "PK". So Excel compresses its file contents. Now we know why there is not much difference if you compress an Office 2007 file.
Lets look into the compressed contents. Rename the file extension from .xlsm to .zip
Open the MyFile.zip file. Wow! its an extensive structure with xml files to store the workbook, worksheets, calculations, sharedstrings, etc.
This is how the XML of the Sheet1 looks
Lets explore more. Lets go back to our original file and add some VBA code to it.
Add a password and protect the VBA code.
Save the file and redo the same steps as earlier to open the xml file structure. We now have another XML file called vbaProject.bin. This is the file that I need to recover. Lets investigate further. Open this file in a Hex Editor (there are lots of free ones out there... the one I use is Hex Editor Neo at http://www.hhdsoftware.com/Products/home/hex-editor-free.html).
Search for the keyword "DPB" in the content. Remember to find it just above "[Host Extender Info]".
Once found, replace the string "DPB" to "DBx" and save the file. Now replace the edited "vbaProject.bin" file and place it back into the compressed file collection (replace with the old one). Rename the compressed file back to ".xlsm".

Try to open the file in Excel. It gives an error saying that the file contains an invalid key DBx. Hit Yes and proceed. The file opens. So far good. Now go to the VBA editor.
Next it gives another error "Unexpected Error". Proceed again by hittng OK
VBA Editor opens. Now try to open the module code. Again the "Unexpected Error". Dont lose heart... we are just there. Save the file and close it. We are all set. Your file is as good as new without the VBA password. Go check for yourself!

So Excel may NOT be encrypting the VBA file after all, rather it is only setting a flag to lock the VBA content. This is evident because we can still see the code in the vbaProject.bin file (that we had written in the VBA earlier).
Some more interesting bits. Check how Excel stores its file contents. Look into the file sharedStrings.xml. It stores the strings at a global level, not in the sheet itself. Also look into how it stores the formulas and formatting. Try out things like like dragging a cell content (like Area 1) into 5 cells (producing Area 1, Area 2, Area 3...) and see how it stores the values... using ranges.

That also says that, it may be better to access Excel data directly from these XML files rather than through the Excel application model. We could have much more control and simplified logic for storing (for instance in database), transporting (eg client machine to server), opening and displaying simple content. Many possibilities here...

Well, I was pretty pleased that today I learned something new... and an unlocked VBA code.

Saturday, March 27, 2010

Business of Software Conference 2008 (Part 2)

Excerpts from lecture by Dharmesh Shah, OnStartups.com
  • At startup, your idea may "suck"... get started!
  • Say "NO" to venture capital
  • Target liquidity
  • You don’t have to go out there and market (broadcast) to get people interested!
  • Real EV of raising venture capital is high (add difficulty in getting one)
  • Nobody reads Business plans... rather write a blog!
  • All startups should be embarrassed about their product when it goes out into the market... If you are not embarrassed, you have waited too long!!
  • Don't depend on advertising to sell your product
  • You are not gonna be able to get the "pricing" right anyway... so just pick one
  • Starting as early as possible and "charge" as often as possible
  • SAAS - You are now the customer
  • COCA - Cost of customer acquisition
    • = Money spent to get a new customer onboard
    • = (Total cost of sales + marketing/Number of new customers) - lifetime value of the customer (LTV)
    • Therefore, one of the biggest success factors - lower attrition rate
  • CHI - Customer Happiness Index - Probability of customer that he will stay next month
    • Above can be correlated with (and hence should be monitored closely)
      • Did the customer use the software, usage patterns (e.g. customers who use "a" feature are 4 times more likely to stay than who don’t
      • Track usage data - by feature... who recommend it + which customers used it and how many left + who approved it
  • Don’t do "partnerships"
  • Go to the market even before you have written the first line of code
  • Manage Risks - technology risks, market risks
  • Try and reduce market risk as early as possible
  • "Pay per click" is a morphine drip

Business of Software Conference 2008

Excerpts from lecture by Jason Fried, 37 Signals (the Back Pack guy)
  • Maintain "momentum"... do small projects
  • Build the "real" thing (UI)... avoid abstraction (unwanted documentation)
  • Do what works now! Optimize for now... No decision is permanent
  • Avoid words like - Need, Can't, Easy, Everyone, Nobody
  • Have Uninterrupted stretch of time for productive work
  • Focus on what is NOT going to change - Speed, Simplicity, Clarity, Ease of use, Reliability, Uptime
  • Keep questioning... always and all sorts
  • Focus on "easy" ones "first"

Wednesday, March 3, 2010

Sharing Agile experiences of a Scrummer

Jean Tabaka has recently compiled a list of tips and tricks to scrum better. I thought it is worthwhile to share it. We may know already know most of them, but penning them down into a list makes it interesting! And, alomg the way, it has some great links too.

Here is the article.

Tuesday, February 16, 2010

Karaoke - Bade Achche Lagte Hai

For long I have been searching the karaoke version of this song. Finally, here's the link to
Bade Achche Lagte Hain – Amit Kumar – SD Burman – BALIKA BADHU.

Friday, February 5, 2010

Flash as a UI: Integration with HDP Applications

As posted earlier, here is an application of the flash Dial component used from within a C# app. During this exercise, I have learnt a few good things. Flash can easily be used as a front end for a traditional application written in .NET or Java.

Flash, over the years have mastered the art of screen displaying content. It has excellent layout placement, UI precision as well as rendering capabilities. This, along with the great filters makes it a ideal for UI. On the other hand, languages like C#, VB, VB6 and Java are very strong from programming point of view. Memory handling, disk and shell interaction, interaction with the OS and now more recently web services are better handled by heavy duty developer platforms (HDP). But the HDP have always lacked (though we have probably not acknowledged) pretty graphical UI. A complex user interface does not have to, NOT look "chick".

The midway, Flash UI for a HDP App, has a lot of potential in store. A probable contender is AIR, but would lose out owing to the fact that legacy applications are still on the HDP (the developers lobby!). Also, AIR may be (at least initially) viewed as, not sturdy enough for HD applications. Lets look at the "Flash UI for a HDP App" approach.

The problem has always been the interaction of the HDP with flash. The common (unwilling crime) has been taking the "SetVariable" route. Here we update a variable from outside Flash and wait for it to detect the change asynchronously. The "ChangeVariable event is fired and all the processing is done within Flash without an active feedback back to the HDP app. This seems more of a HACK rather than a solution.



Long awaited, there is now a mechanism to run an operation synchronously from a HDP app to flash and back. It is done through "ExternalInterface" and can be smoothly called from HDP as well as javascript.


- or -


Here is an example created to demonstrate the above in .NET using an earlier created Flash component. Google out "ExternalInterface Flash Samples" for understanding the concept.


Another big advantage of using a Flash UI is, that it is usable both in desktop applications as well as web app. You develop a single UI... and it is deployable both on desktop and web; and looks and interacts exactly the same way. Sometime back, I came across a paper (pdf report) done around this area (citation invited)(* updated below) that talks about Flash as a front end. Go ahead, indulge... You can even afford to keep f-in-box aside and start on your own!

To sum up, Flash needs to be seriously tried as a front-end for complex, enterprise "user interaction intensive" applications like ERP, industrial automation, simulation, etc. I foresee frameworks, interface layers and design templates in the Open Source being developed to support and enhance such initiatives. A Flash UI could give a product company that small winning oomph over competition.

*Updated on 10th Feb 2010: Here is the pdf mentioned in the post above. It was a March 2003 paper taking about "Macromedia Flash and VB: A Potent Combination".

Sunday, January 31, 2010

Embracing scrum

Introducing scrum to a first-timer team may not necessarily be difficult. Even if the team is completely ignorant of the scrum-way-of-working, the following steps could ensure a smooth process sustenance.
  1. As a scrum master, focus only on the scrum process for the first couple of sprints. Ensure that none of the steps are bypassed and every step (that has been decided by the process team) is adhered to as a religion.
  2. Hand hold the team about what is to be done at each step - what questions are we trying to answer here? Develop your own "team jargon" that the team can connect to, for each activity.
  3. Punctuality is a MUST. All meetings start absolutely at the decided second, and ends as decided or earlier. All meetings have to be conducted and recorded even if there is nothing to discuss.
  4. Conduct the Daily scrum meetings with passion. New teams members start respecting and appreciating scrum from the Daily scrum meetings. Keep the sessions clean and crisp. (If you are not confident, practice your part thoroughly or attend other scrum meetings). These sessions will help you drive across the core spirit of a scrum team.
  5. Celebrate each sprint closure.

Saturday, January 30, 2010

Flash Dial (Gauge) Component

For an application, I needed a Dial (Gauge) component made in flash (preferably in AS3), and open source!. After searching for sometime, I got some great, and some not-so-great components. A few are listed below:
  1. One of them, a classic, is from Bright Point, but unfortunately in flex.
  2. A good collection of components from AnyChart lie here, but not free.
  3. Another one was from XML/SWF, mediocre, but again paid.
Hence, decided to write my own. I am sure this could benefit few of you too.

Objective:
  1. Create a flash Dial component,
  2. that had capability to define regions (at least 3),
  3. as well as support percentage display,
  4. customizable background colors,
  5. real time value update without refresh would be bonus.

Here is the outcome written in flash (<30kb). It has the following methods:
  1. InitiliazeComponent: takes the following parameters: Minimum Value, Maximum Value, Percent Display Needed?, Region Definition
  2. DisplayNewValue: takes "New Value" as parameter. 
Rather than using the traditional SetVariable route, I used the ExternalInterface (which is by the way, newer and much better). Some very good posts are available in this regard, here. The ExternalInterface is also pretty smooth when calling from .NET applications. Will be covering this area later.

Here is the application being supported by a javascript test page. The loading of display parameters as well as dial value is done through javascript. The body onload event in the browser did not wait for the Flash SWF to load completely, firing much before the movie actually got loaded. Thanks to the new way of communication between flash and External apps, the parameter loading javascript waits for the flash to complete loading the movie first.

Do write in the comments if you like it and/or need the AS3 source code.

Thursday, January 28, 2010

Understanding finer issues of Scrumming

Out of experiences, we gather that using small control points we can move the earth. In scrum discussions, we come across such control areas listings that need to be monitored and attended to. These control points, if adhered to, help manage the project flow with ease. If not religiously followed, can be the starting points of damage.

One such area is the "Defend Meeting" that surprisingly does not figure high in these lists. Why so important? Because when it comes to planning, 50% of us are below average.

The Defend Meeting is a team session that is conducted after the initial planning is done by the inidividual members. Here the members "defend" their plans towards a team concensus. This session gives one more chance to rethink the plan and helps each member to see the COMPLETE picture, hence reach better team estimates. It is often seen that it brings out a lot of missing links that have not been thought during the planning. The Defend Meeting helps the team fight out their insecurities (especially the younger ones) and iron out the "coordination critical paths".

Another mantra that I learnt from an associate team, Mike Marcus and Don A Hampton, is "Expose inefficiency". The team starts to unearth flaws early in the game. In a truely fluid agile environment, rather than promoting wrong competition (as we would think), this team behaviour actually binds them together and works out better. If the team members are in seperate locations or multiple teams are coordinating or team size is big, this princicle is a must. (Ideal size is still 6 though). This principle could be promoted as one of the team policies and reminded as often needed. Do not shy away from marking the lapses or failures in the Sprint Review document.