Since a couple of days, I've had a revalation. You know, one of those shower clicks you get once in a while if you are a typical wanna-be-geek like me.
Timeline does not solve any problem. Yes it looks cool. Yes it is a technological achievement to fetch all that information in blink of an eye. Yes it makes our memories even more memorable and documentable (which is debatable). But it does not solve any problem per se. Coolness does not solve problems.
Timeline did not get executed properly. There was a lot of hype about it around the blogosphere and by Facebook itself at the F8 conference, but even after 4 months its no where near launched completely. This puts another dent on face book's not-so-immaculate track record when it comes to changes. I love it when Facebook breaks the status-coup and makes a change for the better of the users like the newsfeed changes earlier in 2011. I was also seduced by the apparently sexiness of the Timeline - but don't think it solves any problem.
So what problem should have been solved?
The biggest problem with internet in general and social networks (read Facebook/Twitter/Youtube) in particular is that it suffers from chronic amnesia and as a side-effect, paranoia. What's worse is that its completely oblivious of this condition - and as a meme does, it propagates like a virus - users its hosts. People are more impulsive in posting things and other people are as if waiting to accept and get excited about anything that they see on their profiles/feeds. The amnesia side is evident when old articles are posted again and again - and if they are horrific, it creates paranoia. But paranoia is quickly overridden by something nice a user see's on their profile and amnesia kicks in again. The whole thing usually gets forgotten very quickly, and this is a major problem that is going to haunt the internet if not fixed right now. Things get lost and forgotten really easily and events like OccupyWallStreet and others pick up quickly, die quickly - typical impulsiveness. The social network corporations are selling the drug any young generation longs for - a small shot of excitement. So, internet is suffering from short term memory loss. The only revenue they are making at all is through ads. The strategy is simple : keep the users busy on your service while you show "relevant" ads. Is it all about the money?
Second problem, which the open graph and the semantic web should have solved by now - and especially I wanted it to be solved by the Timeline feature - is that the information is still isolated. Not only topic wise (which I admit is getting better) but time wise. This creates a void of context, leaves reader with no other option to accept what is being posted. It makes the spam harder to tackle - and useful information harder to track. (Some services tackle this in one way or the other). The biggest headache is trying to find a song that my friend posted on his Facebook profile. But since we have amnesia, we forget that we have forgotten where it was. Don't tell me you've never had a moment like that? Its NOT your fault!
Third, the information lacks packaging. If there is any packaging at all, it exists with the corporations that produce the information. User's trust the source - but at the end of the day they are interested in the content only. WSJ, Mashable, Techcrunch, 9to5Mac and other very credible sources can sometimes get away with paid for content without informing the users. Even if they are one off incidents, they create a bad market (which is evident in some products going dead only after getting a download link via these sites because they could not sustain it). It also affects democracy and explorability. If I am reading a review of a product on Amazon, why should I have to bother and see what Barnes and Nobles users say about that particular book? If I am reading tech crunch about an Android device, why should I be limited to just tech-crunch when nearly all the web is posting something. To some extent, there are products that are trying to resolve this (e.g. comparison search engines etc.). Facebook trys to bring up the most shared things on top, try to chunk the information. But again, do you have a say in it? Can YOU dig deeper in that graph?. No!
So it all boils down to three basic problems: amnesia, connection and packaging. All this should have been the root problem the timeline is solving. Its meant to slow things down on the internet, put a valve on the firehose of information, bring the information into a democratic connection - and package it the way user's would love to consume.
The thoughtful among us hate the internet right now. The thoughtful among us hate the news. The thoughtful among us hate the technology. The thoughtful of us hate the corporations that are bombarding us with breaking news and imposing advertisements.
Its time someone sets it right.
Wednesday, December 7, 2011
Since a couple of days, I've had a revalation. You know, one of those shower clicks you get once in a while if you are a typical wanna-be-geek like me.
Tuesday, October 13, 2009
- Extensive Test plan template: If you are starting to build test plans for your product this is good resource to start with. Its based on IEEE 892 and is used by XBox team with some amendments. Covers a lot of ground.
- Why no extension properties: Eric Lippert explains the science behind not having extension properties like extension methods in C#.
- My history of visual studio: Another extensive and deep post by Rico Mariani (Visual studio chief architect). Channel 9 started a series of these as well here.
- Good developers write good code instinctively: An insightful post by Casey.
- Classic software mistakes: Steve McConell illustrates an in-depth study on why software projects fail.
- Exploding software engineering myths: Microsoft research busts some software engineering myths using practical data at Microsoft.
- Myths of software development productivity: Self explanatory title.
- Oh that’s just academic talk: Ever heard that phrase in software industry? Read how smart business talk is not academic talk.
- How we do things – TDD: Another bit of my shameless evangelism for TDD.
- TDD triage: Uncle Bob debunking TDD myths.
- The three rules of TDD: Uncle bob’s three rules of TDD.
- The Bowling game kata: I wrote a post about TDD kata based on Roy Oshirove’s post. Here’s uncle bob’s Bowling game kata. Also there is a prime factor kata. This is where I don't agree with Uncle Bob because some things are just meant to put off people from TDD.
- Echos from the stone age: A very good post but I still have some reservations of techniques uncle bob is using. Basically I don't agree with his TDD for developing algorithms approach. What do you think?
Other useful daily link blogs:
Monday, October 5, 2009
Are you an application developer? Do you write complex systems? Do you worry at night about regression? Do you dream about the build failing in the morning because you committed some changes last night – and they seemed to be okay still you’re not sure because you’ve seen that happen before? Do you wonder why to start? If yes, then test driven development is what you ought to be working at.
Complex (and even simpler ones, to a lesser extent) applications require a rigorous coding practice. As your code base increases, the chances are that the requirements are going to change (according to Murphy’s law). If you are doing Agile development you already have an idea how to handle that. Though if you are not using unit tests, you do not have an infrastructure to ensure that the system remains stable while you refractor your code according to the requirements.
Now we’ve seen large code bases without any automated tests. We’ve seen chronic regression issues (especially near the deadlines) and we’ve seen nightmares of it all hitting us back. We’re lazy to write unit tests (because if it works, why test it?). Its only later do we regret not writing unit tests. The best way to deal with this symptom is doing test ‘driven’ development.
Test driven development emphasizes on test-first approach.
For each atomic requirement:
- Write test.
- Run test. Verify the test fails.
- Write code to make that one test pass.
- refractor while keeping all tests passing.
型A Kata (from wikipedia):
Kata (型 or 形, literally: "form"?) is a Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. Kata are used in many traditional Japanese arts such as theater forms like kabuki and schools of tea ceremony (chadō), but are most commonly known for the presence in the martial arts.A TDD Kata is the method used by Roy Oshirove (ISerializable , 5Whys, Art of unit testing) to teach TDD to such an extent that it becomes a second nature of the programmer. Roy has put up a TDD kata on his blog. The basic concept is to pick a problem and align yourself to think incrementally while making the infrastructure natural.
For TDD Kata 1 that Roy has put up, I tried it and was able to do it in about 20 minutes. Here’s the final code that i was able to create:
Sunday, October 4, 2009
- Hanselman's .NET developer interview questions : Most essential .NET interview questions every interviewer and interview taker should consider knowing. Not necessarily every good or pro .NET developer know these, but they help.
- Why do 'ref' and 'out' parameters do not allow type variation : If you have an out parameter of type A, can you send an object of type B derived from A? No. Read on for why.
- Making unit tests easy to refractor : Its hard to foresee refactoring for your code and its even harder to code for refactoring. This article explains some best practices for making unit tests easy to refractor.
- Five myths about managed code : How many times did you hear' in .NET everything is an Object'? Microsoft CLR team debunks the top five myths about .NET including this one.
- .NET file format - Signatures under the hood : A good well researched article on .NET executable file format and where the signatures reside in that.
- How and when are .NET methods JITed : .NET code is not always JITed. Read to see when and how it does.
- Who wants to be a .NET ninja : A fun open source game based on 'who wants to be a millionaire' only this time, its all about .NET.
.NET code garage sales
- Code Garages : Hanselman explains the concept of Garage sales and how the greatest of developers maintain a Garage for code. I hope to open one of mine too soon :). Here are a couple that I liked:
- Dive into python 3 : Dive into python has been one of the best books I ever read on python - or any programming language for that matter. It literally makes you dive into the water.
- Five focus killers and how to beat them :
- Become a better developer by indexing your brain : Memory is important. Fetching that information in the nick of time is even more important. Read about some techniques to make your brain work like Google.
- The duct tape programmer (Joel Spolsky) : Spolsky writes about a respectable (in his point of view) group of programmers who do not give a damn about COM, CORBA, Multithreading, design patterns and concentrate on one thing - shipping it. And that’s why Spolsky thinks these kind are the must-have programmers. What follows is a debate - mostly debunking his opinion.
- Debunking the duck type programmer | The duct tape programmer (Bob Martin)
- Helios research operating system by Microsoft
- A closer look at Office web apps 2010.
UI Patterns & Data visualization
UI patterns and data visualization, though not having to do much with .NET have an important application in the computing world. Lead about UI design patterns in the following links:
- Infragistics' QUINCE
- Welie's UI patterns
- Pattern Tap
- Data visualization examples and resources
- Modern approaches in data visualization
Pocket Mod v2 : A very neat way to organize yourself without having to buy a PDA or install arcane applications in your mobile phone.
Agile Software Design
Wednesday, September 30, 2009
Here’s a list of link blogs I follow to keep up with latest is software development (primarily application development in .NET stuff).
Jason Haley’s Rambling of a .NET developer : A dedicated link blog of a dedicated developer. The links are organized nicely into Web, Database, Cloud Computing, Innovation, etc. It is updated almost daily.
Chris Alcock’s Reflective Perspective : Reflective Perspectives is another very well organized dedicated link blog organized into different sections and searchable as well.
Alvin Ashcraft’s Morning Dew : Alvin’s Dew drops is a must read every morning. A dedicated writer who also happens to be a Microsoft Valued Professional.
Rhonda Tipton’s Weblog : Very well organized link blog updated weekly (link posts, other posts are quite informative as well). Also blogs regularly on other stuff as well.
O’ Reilly Radar : Not exactly a dedicated or uber-regular link blog, but is a good resource on latest technologies from around the web. The blog is contributed by different people at O’ Reilly’s.
It’s nice to see the evolution of these link blogs and seeing a thriving community of people dedicated to putting up the best of the hand-picked stuff for others.
Posted by Zaki Shaheen at Wednesday, September 30, 2009
Saturday, September 26, 2009
- A mess is not a technical-debt: Bob Martin of Object Mentor elaborates on the oft-misused term ‘technical-debt’. What follows is an insightful discussion.
- Changing prompt for cmd.exe: I needed this for a couple of tweaks to my command line building environment. Very handy.
- .NET University: A great resource to catch up on latest in .NET world.
- Code Rush eXpress: Download this handy Visual Studio Add-in that makes life a lot easier for developers. Lots of nice refactoring features.
- Code Rush eXpress video trainings: If you one of those visual learners, then this resource is for you. Shows the handy Code Rush features as short screen casts.
- Big Balls of Mud: A commentary on one of the cool articles in software engineering (html | pdf). Big Balls of Mud is the term given to “haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle.” If you have seen this type of code, go through the article.
- Documenting your Air, Food and Water: Why you should document each and everything you know about your development environment.
Programming Practice Links
When was the last time you tackled a programming problem that truly got your head involved? When was the last time you learned a different language? (No, learning C# after Java or vice-versa is not counted). Here’s you change to keep or pick this hobby with online judge systems that give you a plethora of programming problems to solve in different languages.
- Code Chef: With a wide variety of languages at your disposal, use your language to solve problems and get paid. Code Chef has monthly competitions as well.
- Code Golf: Show you code-fu by trying to solve problems in minimum possible number of keystrokes. Use Perl, Ruby, Python or PHP to solve problems and sharpen skills.
- Programming Praxis: Programming Praxis is a blog dedicated to posting programming problems and readers submit code by comments. Any language is acceptable.
- Project Euler: Project Euler is an ambitious project to get mathematical knowledge out there using programming tools. It has a series of regularly posted challenges which are mathematically or programming intense. They require more than just programming or math knowledge.
- Top Coder: TopCoder is a crowd-source based company that’s gaining momentum very quickly. It has the most extensive set of competitions for programmers. One of the most loved one is the Algorithms competition that happens fortnightly. They also have attraction for software engineers and designers by putting different phases of software development to competition (i.e. Software Conceptualization, Software Specification, Software Architecture, Software Design, Software Development, Software Assembly, Testing etc.).
- UVa Online Judge: An extensive list of problems to be solved using C++, JAVA, C, PASCAL, as used in university of Valladolid.
- Timus Online Judge & Sphere Online Judge: Provides a lot of problems and language support to train yourself to algorithmic problems.
9 ways marketing weasels will try to manipulate you: Jeff Atwood picks from Predictably Irrational. Quite an eye-opener and interesting read (to stay away from and still use on others :P)
Thursday, September 24, 2009
So after a couple of blog posts I decided to track Debuggerman’s stats (page visits, bounce rate, average time on site, keywords, etc.) and I setup Google Analytics account for it. The basic setup was straight forward and regular. You signup, give your blog’s address and then they give you a code to copy in your theme’s source “at the end of the theme right before </body>” tag. I did exactly that, but somehow it did not seem to work. Analytics kept showing me the warning sign. This post seemed like a ray of hope, but It didn’t work.
I waited for a couple of days but still Google Analytics showed a warning sign in front of Debuggerman’s account. What to do? Did I do anything wrong? I searched the internet and could not find a remedy per se. So I dug deeper and viewed my blog’s source that is generated by Blogger. Not surprisingly, Blogger was adding extra widget source at the end of my post right before </body> and right after the Analytics code (see picture).
If you are suffering from the same problem, you can verify this by typing in your blog address in the browser (e.g. http://debuggerman.blogspot.com) and when it is loaded, right click on the page and click “View Source”.
Simple. Move the Analytics source to right before the </head> tag. The reasoning for this that I can think of from top of my head is that Analytics source conflicts with some Blogger generated source (I'm not sure, I'm not Java Script or web-dev/design expert per se). So moving it to the <head> tag ensure that 1. it is loaded and 2. it is loaded before anything else.
Right after I made this change I went back to Analytics. On my Debuggerman’s dashboard there, I clicked on ‘Edit’ action and then ‘Check Status’ link as shown in this post. All seems to work now. Hence solved the Analytics/Blogger mystery.
Saturday, September 19, 2009
- Extract till you drop: Another great resource on Object Mentor on how far to refactor code and when is a refactoring complete.
- TDD for GUI Code: Have you ever had the nightmare of maintaining NUnitForm tests? How about doing things the right way – the software engineering best practices way. This article emphasizes on adapting TDD with GUIs.
- The Humble Object: Continuing from the previous link, its really hard to extract logic from the UI code and then test the logic code. Obviously we’re not the first one to come across this problem and it lies in the category of Test Design Patterns (See below for the book of the week). In Humble object pattern, we extract the logic into a separate easy-to-test component that is decoupled from the environment.
- Visual Studio Text Editor Themes: Bored of the same old visual studio theme? Ever wanted to make it look like you want it to but never could? Scott Hanselman has collected a set of such themes that you can download and apply. Checkout my theme that i picked from them on the right.
- Observer Design Pattern and Event Pattern in C#: This is an excellent article on the very useful Observer design pattern and how C#.NET incorporates this pattern as a first class language feature as Events.
Multi-Threading in .NET: On when to use System.Threading.Thread, System.Threading.ThreadPool and System.Component.BackgroundWorker or delegates invoked in async fasion.
- Windows UX Guildelines: Microsoft has released a new guidelines document that covers Windows 7. A must read for any UX (User eXperience) developer.
- Using Markov Chains to generate Test Input: Markov Chains allow you to generate contextual yet pseudo-random values, where next value depends on the previous ones. This has an interesting application for developing Test cases.
- Effective A/B Testing: Do you develop UI interface? Does your user always like them? See how A/B Testing has fine tuned the way we get users to converge on a design.
- What’s new in BCL 4.0: See what’s new in .NET Framework 4.0’s Base Class Library. .NET 4.0 is expected to release by the end of this year together with Visual Studio 2010.
- Interview with Anders Hejlsberg: Hejlsberg is the Chief language strategist at Microsoft and is one of the prime designers of C#.NET. In this talk he highlights different influences on C# from different languages like Delphi. He also discusses an informal roadmap for C#.
- Development Trends in Emerging Software Markets: See how the development trends are evolving in the emerging markets of south Asia and Asia.
- Office 2010 Web Preview: Microsoft offers a preview of the latest and sexiest Office 2010 web. If Microsoft can roll it out in time and ‘free’, I think it will give a hard time to Google Docs.
Microsoft Launches the CodePlex Foundation which will be a link between open source and other developer community.
- How to ruin brainstorm sessions : See how you can totally blow off a otherwise potential brainstorm session. Read the DO-NOTs of brain storm sessions.
- Was Bill Gates a risk taker? : Read the oft-un-quoted and oft-unheard story of Bill Gates and how he was not really a spontaneous risk taker.
Other useful Links
Book of the WeekxUnit Test Patterns: Refactoring Test Code by Gerard Meszaros
Thursday, September 17, 2009
Feeds to follow
- Patrick Smacchia : Patrick is C# MVP and the man behind NDepend. If he knows something very well, its .NET! Especially code analysis and code quality.
- 5Whys : Roy Oshirove, the writer of Art of unit testing and Iserializeable blog, has dedicated this blog to the budding and blossomed teamleads, basing it on the famous 5 whys model of toyota. He talks about keeping things in focus and getting things done, especially in an agile context. He has also been the architect of TypeMock mocking framework for .NET.
- APCMag : APCMag is a tech magazine based in australia. It features latest hardware and software reviews as they happen.
- Ayende Rahien : Orin, the guy who developed NHibernate and Rhino Mocks blogs about these products and more related to .NET.
- High Scalability : Ever wondered what's under the hood of your favourite greatest applications like Facebook, Myspace, Google, Twitter? Find internals about these and many more application's setups.
Tweeple to follow
- @mashable : Mashable.com's CEO Pete Cashmore. Mashable is an online portal to social media and the likes. Follow mashable to get upto date information about social media.
- @RoyOsherove : A regular tweeter putting his experiences in Agile, Art of Unit testing, .NET and much more.
- @Spolsky : Joel Spolsky talks about software development and is renowned for his blog at www.joelonsoftware.com
- @coddinghorror : Jeff Atwood at www.codingHorror.com
- @drWpf : For .NET WPF resource and updates follow dr. WPF of www.drwpf.com
Programming Links and Resources
- Do you create XSL/XSLTs often? Is it a hit and try method? Read how you can debug XSLTs inside visual studio.NET. Very helpful.
- Learn about Agile Requirements best practices.
- Test coverage of your code is a big issue. Is 100% test coverage mythical? Patrick Smaachia (NDepend ) thinks not. Read why here .
- A highly motivational rendition of Hare and Tortoise story for the likes of us. Read it here.
- Tim O'Reilly, the person who coined and defined 'web 2.0' talks about Gov 2.0 and how Governments can provide a platform for better citizenship and commerce using the technology.
- Google wave hits the market at the end of this month. Read 5 ways it MIGHT change the world. See official wave demo here .
- Behavior driven development from scratch teaches the difference from regular unit testing and TDD in .NET. Garry Shutler starts a series of these articles from this post.
- If there is one company that has taken .NET WPF seriously, its Thirteen23. Checkout their demo applications like Blu (a really sweet twitter client). Also check out their TED player.
- See Ayende (creator of Rhino Mocks for .NET) screencast and teach the use of rhino mocks in this 10 part series.
Feeds to follow
- The Old New Thing : Raymond Chen 's regular blog about all Win32 API and internal, not-so-common, wisdom about windows operating system.
- Coding Horror : Jeff Atwood's always loveable regular rants about technology and computing - for the daily users and developers.
- Faboulous Adventures in coding : Eric Lippert's senior advice and wisdom on C# and other Microsoft technologies.
- Joel on Software : Joel spolsky's discussions about software design and best practices.
- Mark's Blog : The WinInternals and now SysInternals guy. The technical fellow in the platform and services devision at Microsoft. Its a low volume, high wisdom blog. He solves one case at a time, cases that annoy us all the often. Also, a regular insight into Windows internals. Do you use SysInternal tools ? You should. For example ProcessExplorer , TcpView , Procmon. They definitely give you more control over Windows system so you can diagnose problems easily. Download the complete suite here .
Tweeple to follow
- @zakimirza : Thats me :). Follow me to get updates on myinconsistent self, rambling, links and blogposts, occassional cursing on speghatti codes and what not.
- @shanselman : Programmer, author, teacher, speaker, web guy, podcaster, starving stand-up comic, diabetic, Microsoft shill. Social Media! Why not?
Scott Hanselman is a very renowned blogger, tech analyst and computing enthusiast. Upto date tweets on the latest.
- @stocktwits : Real-time stock conversations.
- @timorielly : Founder and CEO, O'Reilly Media. Watching the alpha geeks, sharing their stories, helping the future unfold.
- @google : News and updates from Google
Programming Links & Resources
- Checkout Roy Oshirove's post about other blogs that emit daily news about .NET etc here A very useful reference indeed!
- StackOverflow is a rapidly growing question/answers site developed by Jeff Atwood and Joel Spolsky. Has answers to questions spanning from best practices to code problems.
- Tim Orielly talks about Govt. 2.0, its all about the platform. Read it here.
- CodeBetter is a colgremate of blogs to promote better coding practices.
- Read about latest in .NET's base class library (BCL 4.0) .
- A success story using NDepend to make better managed code of a large application. Its all about the design.I wil blog about NDepend and its usage pretty soon.
- 7Zip is an opensource windows utility for manipulating a large variety of Archives.
- Ever needed a good CLR profiler? Try dotTraceand Intel prallel studio to find profile your application for performance, memory leaks, deadlocks and much more. Both of these integrate well with Visual studio.
- Visual Studio 2010 is just around the corner. The new UI is designed in WPF. Yes really. Read VS's architect's take on this here
- Check out Scott Hanselman 's 2009's top utilities here.