spartacus tv series is fantastic
I recently watched a few episodes of Spartacus “Blood and Sand” and “Gods of Arena” series. The episodes are full of blood gore and madness, but never lose the plots. I really admire the acting, dialogues and the script which always keep up the pace in the main story.
Both the series have fitting and meaningful endings in their final episodes. The TV series is based on the Spartacus, who led a short-lived Gladiators uprising against Roman empire in 70 BC.
The “Blood and Sand” series is about Spartacus finally killing his master “Quintus Batiatus” and beginning of the gladiators uprising. The “Gods of Arena” is the prequel re-lived by Batiatus in his final moments.
The main protagonists in both series “Spartacus” and “Gynaceous” have similar style of fighting; Killing a opponent is matter of seconds with the right movements. This is contradictory to fighting style of another gladiator “Crixus”; Fight with honor and then go for kill.
Batiatus is killed by Spartacus with the help of other gladiators in the final episode of “Blood and Sand”. However, Batiatus shared the same feeling of victimization, as did Gladiators, from his Roman superiors. He gained trust and honor from his gladiators by sharing his luxuries with them. He even went to extent of finding out and bringing back Spartacus’s wife, but got her killed on arrival. He deceived the Gladiators by plotting a lot of criminal schemes, killing them or killing their families to detach them for his purpose. When gladiators found out his schemes, brought a fitting end to the “House of Batiatus” in “kill them all” style and starting the uprising.
In short, the series is fantastic, inspite of nudity and blood-gore. The upcoming seasons look to be very promising as Spartacus leads Gladiators against entire Roman army.
Also deepest condolences to “Andy Whitfield” who portrayed “Spartacus” , died recently from blood cancer.
Practical Math
I read great article “Kill Math“ by Bret Victor which discusses shortcoming in current mathematics.
Apart from basic arithmetic calculations most people are not able to apply math into their day-to-day activities. This is because fundamentals of math which students learn are not visualized.
For example, What does solving 2nd degree equation mean ? Does it cover some 2 dimensional region in x-y axis. Or does a 1st degree equation represent a single line or a curve and 3rd degree equation represent a 3 dimensional region or curve. What are the parameters affecting the shape of the curve ?
Once we start practicing to visualize each algebraic equation geometrically, differentiation and integration of any order will also be easy to understand. So will be Sin, Cos functions which are wave curves.
Math is incremental in structure. Unless the basic mathematics is clear, higher math will remain difficult to understand. Also note that to solve the higher order math, something concrete like symbolic equation is necessary and not all equations can be visualized.
We require to look at representations other than symbols for equations so that it becomes more and more easily applicable in real universe.
This is what I take away from the article.
On lighter note , it is not easy to visualize dark matter colliding in outer space apart from equation as in the “big-bang theory episode 3-04” scene below
Pulp Fiction style
The Wolf: Nobody does a f***ing thing till I do something.
The Wolf: What did I say ?
Jules : Don’t do Shit Unless..
The Wolf: Unless what ?
Jules : Unless You do it first.
Vincent (john travolta) and Jules (samuel jackson)
Southpark is back with burgers
After mediocre first half of season 15, southpark produces a hilarious episode.
Asphygers syndrome, something that a 4th standard kid Eric, misunderstands as Ass-Burgers; tries to sue the school for it and makes his burgers a huge business.
Scence 1
Eric Cartman has a plan and goes to school nurse.
Eric: I have sharp pain in my bums.
Nurse: Lay on your stomach, (checking bums) wait a min.. are these hamburgers.
Nurse: Eric, why are there hamburgers in your underwear ?
Eric: Oh, so you mean i have ass-burgers
Nurse: This doesn’t make sense. are you trying to sneak food into school or something
Eric: What r u talking about, i got vaccinated from the school and now clearly i have ass-burgers
![]() |
Scene 2
Kyle: (eating that hamburger unknowingly) dude it tastes awesome.
Cartman Burger becomes huge success,
but no one knows its final ingredient which cartman puts in a secret chamber.
![]() |
Scene 3
“At the conference of burger giants: kfc, burger king, subway.. trying to understand secret of cartman burgers.”
![]() |
There lies the secret. its the chemical compound of all our flavours .. infused into one
![]() |
Its as if he is somehow taking all the ingredients of our food, breaking it down into some kind of gas
and then somehow infusing that gas into his hamburger.
![]() |
What kind of instrument he may be using to do this.
It would have to some kind of super dutch oven.. with a technology we have never seen.
Of course his ass-burgers.
South park is back with
when will you stop coding and start designing
I am recently challenged in my software development work with above statement which I have not understood clearly. This is because I never considered these 2 as separate activities. In quest to understand these 2 activities, luckily I read a very thought provoking article, “Code as Design” written by Jack Reeves way back in 1991.
It emphasizes the same points which I observe in my software development work. The article however true it may be, is not generally accepted by many software experts. After short summary of his ideas below, we have to look at what changes are required in our current methods to implement his ideas.
“Code As Design” Summary
In short, it compares software engineering with other engineering fields like construction and explains what are shortcomings in Software Development Life cycle.
A software development life cycle or SDLC has 4 significant phases: Requirement Analysis, Designing, Coding, and Testing. The general perception is that when compared to construction engineering for example, the Software Coding phase is equivalent to the actual building phase of Construction engineering. ie the Coding activity means implementation of the Design document. This is the point, to which Jack Reeves has disagreed.
He argues that, in other engineering fields the design activity, includes the process of validating and testing the design document by using various mathematical proofs, mock-ups, and simulations before actually handing over the design to the implementation team. In software design activity no such process of validating and testing the design takes place.
There are 2 main reasons for it. One, Life of most Software applications with a few exceptions is more volatile than other engineering products. And Two, Proving the Software Design using simulations and mock-ups is costly compared to just coding the design.
So the design document in other engineering fields is a proven good design, whereas – as Jack Reeves puts it, the design document in SDLC is not a very good design, but design it is. It is this fact which is accepted by Software Industry, not allowing it to be a disciplined science.
If we were to agree that the design document is not the final design in software development then it implies that, Coding and Testing activities are going to affect the Software Design document, and final design document will be generated only after the Code and Test activities are complete. The final master design document is the “Code” itself with auxiliary documents like High Level, Low Level Designs, data flow diagrams etc. that explain various concepts which cannot directly be explained in code via data structures and algorithms.
The building phase of software is merely the compiler building and linking the application based on the design document which is the “Code”.
To further emphasize this idea, he reasoned that “C++ is getting popular among programmers because it is more expressive language. Any advancements in Software development will directly depend on the advancements in Programming languages”.
Methods
As real and practical the above ideas are, there is hardly any formal software development methodology which implements it. Requirement Analysis stands out as distinct phase, whereas Design, Coding and Testing are separated with blurred lines and dependent on each other.
Designing:
Most SDLC methods enforce more time to be spent on Designing and after that start Coding. Until the design is clear, not a single line of code should be written. And many experts argue that if Coding team just implement the design as given without hacking it, SDLC would be more like other engineering process. But we know the software design document is incomplete because it has not been tested or validated.
The changes in design document are bound to happen once the coding or testing activities start. So it is necessary to start coding and testing as early or as synchronously as the design activities start.
Once requirements and functional specifications are documented, we divide the application into various smaller applications or modules. The relationship between these sub-components is captured in system architecture. The system design may capture only the inter-relationships between the sub-components and the data-validation checks, but these are also not necessarily final as there is no testing/validation happening to prove the correctness of these documents.
Coding:
Each developer or a team of developers is assigned a sub-component for which they prepare high-level design. We have observed that the High Level Design doc, UML diagrams do differ from the final software code which is developed. So what is the use of these pretty diagrams when the actual code works differently. Also it is because of this reason that a software company is going to find, replacing a developer most costly. Companies would be in much better scenario if a formal activity existed after code and bug-fixing completes, to get auxiliary design documents from the Developer who has written the code.
The most important question for developers is when to start coding. Actually, there is no silver bullet answer for this. Sometimes, a little extra thought on design before actually coding can save hours of rectifying the mistakes, and sometimes even after weeks of designing and brain-storming, we may actually miss some scenario which will come up in testing or after the deployment.
You can look at some articles on Coding Methods which i found useful: software design principles and No Silver bullet in software development .
So the only real answer here is that Code – Data Structures, Methods, must be written in such a manner that it can easily be changed or replaced. It should be modular and must follow the patterns which we all read about on the internet. The success of the project lies on this single “Coding” activity, so it is necessary for people who design the system to be involved in coding of all the critical parts of the system.
We now have so many languages and platforms, C#,Java,Rails that have all been popular because they have been even more expressive than C++. So it is absolutely necessary for today’s developers to think of how his/her code affects the overall design of the system. Any reason which a developer in “High Level languages” gives about coding not as design activity has not understood his job as Software Engineer and Programmer.
Testing and Bug-Fixing:
Any good developer loves identifying the bugs in the code and fix it while keeping in mind various variables and modules its going to affect. This is because Testing and Bug-Fixing is a high engineering activity. To fix a bug you are changing the code, which means that you are changing the design of the application. Have a look at some of the debugging tips here.
It is no shame that testing and bug-fixing take at least 50% of overall time of SDLC because it is the only place where entire system design and code built until now will be validated and tested.
To summarize this method has to enforce 2 points.
1. Developers have to acknowledge that the system design is not a final design and is subject to change. Code must be done in a modular way to handle all future changes.
2. System Designers have to validate their design by testing the completed code and suggest changes.
3. The best approach is that a person who have designed a component of a system, codes it.
Agile and Prototyping methods are the only methods which come close to implementing these ideas. They ensure that coding starts in the early phases of Software Development and people who are involved in design are available for development.
A lot more discussions and ideas are required to solve this crisis.
Windows 8 and HTML5
Microsoft showcased its next OS “Windows 8″ at BUILD conference[1] in 2nd week of SEP’11. Windows 8 marks Microsoft’s entry into ultimate Tablet OS race which is currently led by Apple’s iOS and Google’s Android. Windows 8 will essentially have 2 versions, one for Desktop PC and another for Smartphones and Tablets.
The Windows 8 success will mainly depend on its tablets sales [2]. This is because Windows 7 was released only a year back, and many organizations have just recently finished their Windows 7 upgradation or are still running Windows XP. Both these OS are just enough for an Enterprise Desktop machine.
The Windows 7 and Windows XP support an eco-system of legacy applications built over a period of 20 years. Most of these applications are built on app development platforms like Win DNA, VB6, and .NET, though now the push is to create cloud based applications.
So it is very surprising to hear that Windows 8 is promoting HTML5 + Javascript as its application development framework. Note that Windows 8 desktop version will still support the legacy apps and runtimes but the tablet version won’t. For any application to run seamlessly on all versions of Windows 8, it has to be developed on HTML5+JS platform. This is not a new concept but is already present in Windows 7 in the form of “Desktop Widgets”. HTML5 + JS app is nothing more than pulling a webpage out of the Web-browser and having its own separate window.
Technically, this means the web-browser process now acts as runtime for HTML+JS applications just like the .NET runtime. (Interesting irony that Microsoft had to face lawsuits in 90′s for shipping the same IE web browser with its OS.) For a desktop application, HTML5 + JS is very restrictive platform compared to programming richness in C#+XAML+.NET platform.
Lets look at this Windows 8 decision from another perspective..
To support tablet devices, Windows 8 have to support ARM processor architecture used by all the current tablets and smart phones. ARM architecture is, system on a chip device, which is essential for tablet experience and for optimizing its battery consumption. All the legacy apps and runtimes on Windows machines are built on x86 processor architecture. It may be possible but just not feasible to port all apps and runtimes built over 20 years to ARM arch. Hence the decision to use HTML5+JS for cross platform development and C#+XAML+.NET as native platform.
The way forward for the application development is Cloud based Server with a thin client on HTML+JS platform. But this also means that some of the winner Microsoft products like MS Office won’t be supported on tablets directly. Microsoft may provide alternative solutions like Office 365, but there is still no functionality available to run an office-addin in Office 365. A number of business applications are developed as office-addins which have .NET or VB6 back-ends. So how will they seamlessly run across all versions of Windows 8 is a big question. How far will HTML+JS be integrated into Microsoft’s own products like MS Office is yet to be seen.
[update]: a post talking giving more details about Windows 8, ARM, MS Office concerns http://thisismynext.com/2011/09/16/windows-8-arm-tablets-legacy-apps-microsoft-office/
A virtual machine that dual boots (lol)
I have a Windows 7 machine in office and it has 1 virtual machine installed which Dual Boots…ie it has 2 OS installed.
A virtual machine is usually created for 1 OS only, and my virtual pc which dual boots, beats the concept and logic of a virtual machine itself. (laughs)
Virtual PC was installed on my system with a virtual machine for Windows XP and 2 GB virtual hard disk. This setup was required in one of my projects for testing and it fulfilled its purpose at that time..
Now when I wanted to install a new software on my Virtual machine, the virtual hard drive fell short as it was only 2 GB even though I had lots of space on my physical hard drive.
After searching for some time on internet. i realized that this disk size cannot be changed. Nor did i found how to create new virtual machine and install an OS on it. I did not want to waste time researching on it.
So i had to resort to this logic defying way to dual boot a virtual machine (laughs).. I am sorry but it did serve my purpose.
gta 4 story complete
Welcome to Liberty City, Where the Dreams are Broken.
After all the missions and double crosses.. when it is time to complete the final mission, kill the don and take over his mansion, one of the main characters related to Niko Bellic (player) is shot; either Roman or Kate.
I had played GTA Vice City, San Andreas, GTA3 earlier. I like the story of GTA3 the most.
Even though GTA4 is more realistic, the world is small, repetitive, and the missions are identical.. GTA San Andreas is best in terms of World, Missions..
Coming back to GTA4 story, the game provide option to the player like whether to hit or spare, or whom to hit in certain missions. The player’s choice affects only the next mission . Following is what i opted:
1. hit playboy X – got his mansion
2. hit derrick – francis helps in reducing wanted level
3. hit darko – effects only next few dialouges of Roman
4. take revenge on Dimitri Rascalov – Kate gets shot.
Finally i completed GTA4 which i wanted to play ever since April 2008..
interfaces in c#
Recently i was pushed to really understand why interfaces are required. We generally say interface is a Contract for a class and it has to implement the methods defined in the interface. For example, inheriting IDisposable will force our class to write a Dispose() method. But why do we want to write Dispose() method in our class, can’t we write it directly in IDisposable classs and use it. Why do we need contracts for this is what i wanted to understand.
Then i came across using Sort() function available for any List<T>. When we have for example a List<int> “intList” and do intList.Sort(), the code works fine.
But when we have List<Person> “personList” (where Person is a user-defined class) and do personList.Sort(), runtime exception is thrown that Person class must implement IComparable.
This gives a little insight on Sort() function. The basic requirement in a Sort() function is Comparing 2 items in the list at a time. The output of this comparison can be less-than, equal or greater-than. To achieve this, the Sort() function uses the method “int this.Compare(object other)” of “IComparable” interface .
Thus the comparison logic is actually defined in the class using Sort() function itself by forcing it to implement IComparable Interface. The class will contain the logic for comparing two objects for that class in Compare function. So we can create our own “Person” class, comparison logic based on name, age etc. and implement it in this.Compare() method.
This is really amazing architecture in .Net FW so that us developers only have to write Compare() method for our class which contains the comparision logic and use the standard Sort() meothod already provided in .NET.
watch X-Men 1st class
Recently i watched X-Men 1st class .. It is really a great movie. even for audience who has not seen x-men before. I never really understood last two X-Men movies and enjoyed them only in parts. But this movie i enjoyed from starting to end.
The movie is about how one mutant Charles Xavier became Professor X and another mutant Eric chose to become Magneto. The differences in thoughts, approach between Charles X. and Eric are very entertaining to see as they get together and create a team of mutants to stop one evil mutant Shawn. The scene i enjoyed most was when Russian and US Navy getting close to a war. But Jack Nicholson looks old and “a few good men” came nearly 17 years ago. The background score is also very good during dialogues so the movie never gets boring.
Finally 1 good movie in 2011. Looking forward for Transformers 3.







