Reset your SQL Server login
Recently I faced a situation where the SQL Server was setup but no one knew the login, and the SQL server was not configured in Mixed Mode Authentication, so how do you recover from this situation other than re installing the instance,
Stop the running instance and then open up command prompt in Binn directory on the instance which would be something like
c:\Program Files\Microsoft SQL Server\MSSQL...\Binn
Run the following command
sqlservr.exe -m"SQLCMD"
This would start the instance in single user mode, now open up another command prompt in the same directory
and then run “SQLCMD”
and execute the following statements based on requirement
If you want to add a windows user use
CREATE login [DOMAIN\USERNAME] FROM windows; EXEC sys.sp_addsrvrolemember @loginame = N'DOMAIN\USERNAME', @rolename = N'sysadmin'; GO;
To add a SQL Server Login use (remember this works only if mixed mode authentication is enabled)
CREATE LOGIN [testAdmin] WITH PASSWORD=N'test@1234', DEFAULT_DATABASE=[master]; EXEC sys.sp_addsrvrolemember @loginame = N'testAdmin', @rolename = N'sysadmin'; GO;
now exit SQLCMD and also do CTRL+C on first window to stop instance and restart the instance in regular mode.
Zune Window in WPF
I have become a huge fan of Metro UI design and i really like the Zune interface and the starting point would be the custom chrome so i searched a bit and found this neat little thing , thought I would share
/// <summary> /// Borderless Window Behavior /// </summary> public class BorderlessWindowBehavior : Behavior<window> { #region Native Methods [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public int leftWidth; public int rightWidth; public int topHeight; public int bottomHeight; } [DllImport("dwmapi.dll")] private static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMarInset); /// <summary> /// POINT aka POINTAPI /// </summary> [StructLayout(LayoutKind.Sequential)] public struct POINT { /// <summary> /// x coordinate of point. /// </summary> public int x; /// <summary> /// y coordinate of point. /// </summary> public int y; /// <summary> /// Construct a point of coordinates (x,y). /// </summary> public POINT(int x, int y) { this.x = x; this.y = y; } } [StructLayout(LayoutKind.Sequential)] public struct MINMAXINFO { public POINT ptReserved; public POINT ptMaxSize; public POINT ptMaxPosition; public POINT ptMinTrackSize; public POINT ptMaxTrackSize; }; /// <summary> /// </summary> [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public class MONITORINFO { public int cbSize = Marshal.SizeOf(typeof(MONITORINFO)); public RECT rcMonitor = new RECT(); public RECT rcWork = new RECT(); public int dwFlags = 0; } /// <summary> Win32 </summary> [StructLayout(LayoutKind.Sequential, Pack = 0)] public struct RECT { /// <summary> /// Win32 /// </summary> public int left; /// <summary> /// Win32 /// </summary> public int top; /// <summary> /// Win32 /// </summary> public int right; /// <summary> /// Win32 /// </summary> public int bottom; /// <summary> /// Win32 /// </summary> public static readonly RECT Empty = new RECT(); /// <summary> /// Win32 /// </summary> public int Width { // Abs needed for BIDI OS get { return Math.Abs(right - left); } } /// <summary> /// Win32 /// </summary> public int Height { get { return bottom - top; } } /// <summary> /// Win32 /// </summary> /// <param name="left">The left.</param> /// <param name="top">The top.</param> /// <param name="right">The right.</param> /// <param name="bottom">The bottom.</param> public RECT(int left, int top, int right, int bottom) { this.left = left; this.top = top; this.right = right; this.bottom = bottom; } /// <summary> /// Win32 /// </summary> /// <param name="rcSrc">The rc SRC.</param> public RECT(RECT rcSrc) { this.left = rcSrc.left; this.top = rcSrc.top; this.right = rcSrc.right; this.bottom = rcSrc.bottom; } /// <summary> /// Win32 /// </summary> /// <value> /// <c>true</c> if this instance is empty; otherwise, <c>false</c>. /// </value> public bool IsEmpty { get { // BUGBUG : On Bidi OS (hebrew arabic) left > right return left >= right || top >= bottom; } } /// <summary> /// Return a user friendly representation of this struct /// </summary> /// <returns> /// A <see cref="System.String"/> that represents this instance. /// </returns> public override string ToString() { if (this == RECT.Empty) return "RECT {Empty}"; return String.Format("RECT {{ left : {0} / top : {1} / right : {2} / bottom : {3} }}", left, top, right, bottom); } /// <summary> /// Determine if 2 RECT are equal (deep compare) /// </summary> /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param> /// <returns> /// <c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>. /// </returns> public override bool Equals(object obj) { if (!(obj is Rect)) return false; return (this == (RECT)obj); } /// <summary> /// Return the HashCode for this struct (not guaranteed to be unique) /// </summary> /// <returns> /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. /// </returns> public override int GetHashCode() { return left.GetHashCode() + top.GetHashCode() + right.GetHashCode() + bottom.GetHashCode(); } /// <summary> /// Determine if 2 RECT are equal (deep compare) /// </summary> /// <param name="rect1">The rect1.</param> /// <param name="rect2">The rect2.</param> /// <returns> /// The result of the operator. /// </returns> public static bool operator ==(RECT rect1, RECT rect2) { return (rect1.left == rect2.left && rect1.top == rect2.top && rect1.right == rect2.right && rect1.bottom == rect2.bottom); } /// <summary> /// Determine if 2 RECT are different (deep compare) /// </summary> /// <param name="rect1">The rect1.</param> /// <param name="rect2">The rect2.</param> /// <returns> /// The result of the operator. /// </returns> public static bool operator !=(RECT rect1, RECT rect2) { return !(rect1 == rect2); } } /// <summary> /// Gets the monitor info. /// </summary> /// <param name="hMonitor">The h monitor.</param> /// <param name="lpmi">The lpmi.</param> /// <returns></returns> [DllImport("user32")] internal static extern bool GetMonitorInfo(IntPtr hMonitor, MONITORINFO lpmi); /// <summary> /// Monitors from window. /// </summary> /// <param name="handle">The handle.</param> /// <param name="flags">The flags.</param> /// <returns></returns> [DllImport("User32")] internal static extern IntPtr MonitorFromWindow(IntPtr handle, int flags); /// <summary> /// Wms the get min max info. /// </summary> /// <param name="hwnd">The HWND.</param> /// <param name="lParam">The l param.</param> private static void WmGetMinMaxInfo(System.IntPtr hwnd, System.IntPtr lParam) { MINMAXINFO mmi = (MINMAXINFO)Marshal.PtrToStructure(lParam, typeof(MINMAXINFO)); // Adjust the maximized size and position to fit the work area of the correct monitor int MONITOR_DEFAULTTONEAREST = 0x00000002; System.IntPtr monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONEAREST); if (monitor != System.IntPtr.Zero) { MONITORINFO monitorInfo = new MONITORINFO(); GetMonitorInfo(monitor, monitorInfo); RECT rcWorkArea = monitorInfo.rcWork; RECT rcMonitorArea = monitorInfo.rcMonitor; mmi.ptMaxPosition.x = Math.Abs(rcWorkArea.left - rcMonitorArea.left); mmi.ptMaxPosition.y = Math.Abs(rcWorkArea.top - rcMonitorArea.top); mmi.ptMaxSize.x = Math.Abs(rcWorkArea.right - rcWorkArea.left); mmi.ptMaxSize.y = Math.Abs(rcWorkArea.bottom - rcWorkArea.top); } Marshal.StructureToPtr(mmi, lParam, true); } /// <summary> /// Defs the window proc. /// </summary> /// <param name="hwnd">The HWND.</param> /// <param name="msg">The MSG.</param> /// <param name="wParam">The w param.</param> /// <param name="lParam">The l param.</param> /// <returns></returns> [DllImport("user32.dll")] public static extern IntPtr DefWindowProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam); #endregion private const int WM_NCCALCSIZE = 0x83; private const int WM_NCPAINT = 0x85; private const int WM_NCACTIVATE = 0x86; private const int WM_GETMINMAXINFO = 0x24; private HwndSource m_hwndSource; private IntPtr m_hwnd; public static DependencyProperty ResizeWithGripProperty = DependencyProperty.Register("ResizeWithGrip", typeof(bool), typeof(BorderlessWindowBehavior), new PropertyMetadata(true)); /// <summary> /// Gets or sets a value indicating whether [resize with grip]. /// </summary> /// <value> /// <c>true</c> if [resize with grip]; otherwise, <c>false</c>. /// </value> public bool ResizeWithGrip { get { return (bool)GetValue(ResizeWithGripProperty); } set { SetValue(ResizeWithGripProperty, value); } } /// <summary> /// Called after the behavior is attached to an AssociatedObject. /// </summary> protected override void OnAttached() { if (AssociatedObject.IsInitialized) AddHwndHook(); else AssociatedObject.SourceInitialized += AssociatedObject_SourceInitialized; AssociatedObject.WindowStyle = WindowStyle.None; AssociatedObject.ResizeMode = ResizeWithGrip ? ResizeMode.CanResizeWithGrip : ResizeMode.CanResize; base.OnAttached(); } /// <summary> /// Called when the behavior is being detached from its AssociatedObject, but before it has actually occurred. /// </summary> protected override void OnDetaching() { RemoveHwndHook(); base.OnDetaching(); } /// <summary> /// Adds the HWND hook. /// </summary> private void AddHwndHook() { m_hwndSource = HwndSource.FromVisual(AssociatedObject) as HwndSource; m_hwndSource.AddHook(HwndHook); m_hwnd = new WindowInteropHelper(AssociatedObject).Handle; } /// <summary> /// Removes the HWND hook. /// </summary> private void RemoveHwndHook() { AssociatedObject.SourceInitialized -= AssociatedObject_SourceInitialized; m_hwndSource.RemoveHook(HwndHook); } /// <summary> /// Handles the SourceInitialized event of the AssociatedObject control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void AssociatedObject_SourceInitialized(object sender, EventArgs e) { AddHwndHook(); } /// <summary> /// HWNDs the hook. /// </summary> /// <param name="hWnd">The h WND.</param> /// <param name="message">The message.</param> /// <param name="wParam">The w param.</param> /// <param name="lParam">The l param.</param> /// <param name="handled">if set to <c>true</c> [handled].</param> /// <returns></returns> private IntPtr HwndHook(IntPtr hWnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled) { IntPtr returnval = IntPtr.Zero; switch (message) { case WM_NCCALCSIZE: /* Hides the border */ handled = true; break; case WM_NCPAINT: { if (Environment.OSVersion.Version.Major >= 6) { var m = new MARGINS { bottomHeight = 1, leftWidth = 1, rightWidth = 1, topHeight = 1 }; DwmExtendFrameIntoClientArea(m_hwnd, ref m); } handled = true; } break; case WM_NCACTIVATE: { /* As per http://msdn.microsoft.com/en-us/library/ms632633(VS.85).aspx , "-1" lParam * "does not repaint the nonclient area to reflect the state change." */ returnval = DefWindowProc(hWnd, message, wParam, new IntPtr(-1)); handled = true; } break; case WM_GETMINMAXINFO: /* From Lester's Blog (thanks @aeoth): * http://blogs.msdn.com/b/llobo/archive/2006/08/01/maximizing-window-_2800_with-windowstyle_3d00_none_2900_-considering-taskbar.aspx */ WmGetMinMaxInfo(hWnd, lParam); handled = true; break; } return returnval; } } } </window>
Reading Metadata of the Buddy Class
Most of the time we would be using buddy classes for putting metadata for auto generated classes, for example:
Say if this is the autogenerated class
public partial class Person { public string FirstName { ..... } public string LastName {..... } public int Age { ..... } }
Our buddy class would be
public class PersonMetaData { [Display(Name="First Name")] public string FirstName { get; set; } [Display(Name="Last Name")] public string LastName { get; set; } [Display(Name="Age")] public int Age { get; set; } }
This is fine but what if we want to read this data back, if we use the Class.GetProperties() we do not get this data back so basically we would have to go through a hoop, but its fairly simple
PropertyInfo[] headerInfo = typeof(Person).GetProperties(); var attributesofclass = typeof(Person).GetCustomAttributes(true); for (int n = 0; n < headerInfo.Length; n++) { var attributesofbase = (System.ComponentModel.DataAnnotations.DisplayAttribute[])headerInfo[n].GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute),true); if (attributesofbase.Count()== 0){ var medatadataofclass = (System.ComponentModel.DataAnnotations.MetadataTypeAttribute[])typeof(T).GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.MetadataTypeAttribute), true); if (medatadataofclass.Count() > 0) { var metadatatypeofclass = medatadataofclass.First().MetadataClassType.GetProperty(headerInfo[n].Name); if (metadatatypeofclass != null){ var metadataofproperty = (System.ComponentModel.DataAnnotations.DisplayAttribute[])metadatatypeofclass.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.DisplayAttribute), true); } } } }
Asp.net Dyanamic Data : A leap for RAD
I have always basically forms over data for the longest period of time (LOB Apps) and most of the time its the same thing over and over again, Setup Database, create scaffolding forms for all the master tables and then move to the next steps, but wait there should be an easy way to this, In the MVC framework you can generate pages based on the model, but there are still a few things that you should wire up manually, enter dynamic data template and this feels like a magical unicorn at the beginning and once you dig deep into into it, its just beautiful, and will save a lot of steps for you.
So lets begin
You have 2 options a Linq2SQL based Application or Entity Framework based application and its just a matter of your preference, Then just create a data Context, This is what i did just to go through and this is not a perfect data model but you can get the point, just create your data context you are almost good to go
then you ll have to uncomment a single line in global.asax
DefaultModel.RegisterContext(typeof(DataModel), new ContextConfiguration() { ScaffoldAllTables = true });
Here the default property for ScaffoldAllTables is false, change it to true if you want scaffolding on all tables, (for now)
and you are done
And this is what you get , Projects and Tasks along with filter and foreign key correctly linked
Now lets customize this a little bit, we would never want all the scaffold all tables and also we would need some validation and hearer names to be changed a bit.
To Scaffold specific tables we will have to mark the tables with [ScaffoldTable(true)] property, and as the Datacontext generated classes are partials we can extend the classes in a seperate file also to provide metadata we will use data annotations and mark all the necessary fields with the required information
namespace TestApplication { [ScaffoldTable(true)] [MetadataType(typeof(Attributes.Project))] public partial class Project { } [ScaffoldTable(true)] [MetadataType(typeof(Attributes.Task))] public partial class Task { } namespace Attributes { public partial class Project { [Required] [StringLength(50, MinimumLength = 5)] [Display(Name = "Project Name")] public string ProjectName { get; set; } } public partial class Task { [Required] [Display(Name = "Project", Order = 0)] public Project Project { get; set; } [Required] [Display(Name = "Employee Code", Order = 1, GroupName = "Employee")] public string EmployeeCode { get; set; } [Required] [Display(Name = "Track Date", Order = 2, GroupName = "Date & Time")] public DateTime TrackDate { get; set; } [Required] [Display(Name = "Hours", Order = 3, GroupName = "Date & Time")] public decimal TaskHours { get; set; } [Required] [Display(Name = "Task Descriprion", Order = 4, GroupName = "Information")] public string TaskDescriprion { get; set; } } } }
The modified task screen would look like
And this is just the beginning we can do a lot more stuff as all the controls can be customized, I will post about grouping and also customizing display and edit controls in a subsequent blog.
Play with Clay
I have been a big fan of ExpandoObject ever since it was introduced with .net 4.0, and I have been using the Expando Object object ever since, but I always felt that it was not enough, ExpandoObject was fun and all but it was just not enough, and me being really lazy remember coying and pasting code just to loop through properties of a class using reflection and all that headache.
Enter Clay : The moment I have laid my eyes on this beautiful piece of code, I have become a huge fan, and it has all the things the expando should have been.
So How do you begin , Its really simple and also follows unique naming convention you begin with a clay object with New (emphasis on uppercase ‘N’)
dynamic New = new ClayFactory(); var cUser = New.User();
and thats it,
In Clay Indexer Syntax and Property Accessors are the same so
cUser.Name = cUser["Name"];
you can pass anonymous objects and also accepts named arguments, you can also use jQuery style chain able setters or put use them as an array
var cUser = New.User(new { Name = "Naresh", Mail = "something@mail.com" }); var cUser = New.User( Name : "Naresh", Mail : "something@mail.com"); var cUser = New.User().Name("Naresh").Mail("something@mail.com"); var Users = New.Array( New.User().Name("Naresh").Mail("something@mail.com"), New.User().Name("Rakesh").Mail("something@mail.com") );
So What are you waiting for get started at
clay.codeplex.com
Silverlight RIA: Validate Entity Server Side
If you are working with Validating a Entity , Simple Meta Data Validation is not always enough , you might have to do a server side validation, and it is really simple
Along with regular metadata add a Custom Validation Attribute which has type of class where your validation logic resides and String name of the Validation Function
[Required(ErrorMessage="Client Name is Required")] [StringLength(256)] [DisplayName("Client Name")] [CustomValidation(typeof(ClientValidations), "ValidateClientName")] public string ClientName { get; set; }
and a sample function for validation would be
public static ValidationResult ValidateClientName(string ClientName, ValidationContext context) { Models.DB.Client client = (Models.DB.Client)context.ObjectInstance; Web.Models.DB.PortalDataContext pc =new Models.DB.PortalDataContext(); var existing = pc.Clients.Where(c => c.ClientName == ClientName && c.Id != client.Id && c.Status == true); if (existing.Count() > 0) { return new ValidationResult("Invalid Client Name as the Client Name already Exists", new string[] { "ClientName" }); } return ValidationResult.Success; }
Silverlight : Binding a WebContext User Property to a DomainQueryParameter
In Domain Data Source if you want to send a parameter to the Query the simplest way to do this would be
{Binding Path=User.Proper, Source={StaticResource WebContext}}Example:
<riacontrols:domaindatasource AutoLoad="True" x:Name="dataSource" LoadSize="20" QueryName="GetClients" LoadingData="dataSource_LoadingData" LoadedData="dataSource_LoadedData" SubmittedChanges="dataSource_SubmittedChanges" > </riacontrols:domaindatasource><riacontrols:domaindatasource .DomainContext> <datasouce:portalcontext /> </riacontrols:domaindatasource> <riacontrols:domaindatasource .FilterDescriptors> <riacontrols:filterdescriptor PropertyPath="ClientName" Operator="Contains" Value="{Binding ElementName=TextFilter,Path=Text}" IsCaseSensitive="False"> </riacontrols:filterdescriptor> </riacontrols:domaindatasource> <riacontrols:domaindatasource .QueryParameters> <riacontrols:parameter ParameterName="AccessLevel" Value="{Binding Path=User.DataAccessLevel, Source={StaticResource WebContext}}"/> </riacontrols:domaindatasource>
Using Linq to Find a Control
I think Every one has one time or the other tried to find a control by looping over and find the required control, but we can use Linq to do the same thing.
public static class PageExtensions { public static IEnumerable<control> All(this ControlCollection controls) { foreach (Control control in controls) { foreach (Control grandChild in control.Controls.All()) yield return grandChild; yield return control; } } } </control>
Then you can use as a Linq Expression
var ctrls = controls.All().Where(c => c.GetType() == typeof(Button));
Mix and Mash Asp.net MVC with Webforms
A lot of people including me wanted to to get on the bandwagon of ASP.net MVC, but the main problem is we do not always get to start new projects and there is always a timeline hanging. I will not talk about the benefits of MVC Pattern as most of us already aware of it, But for an ASP.net Developer where everything is tied up in Webforms this may seem difficult, but once you start taking advantages of this pattern, the usefulness becomes obvious, me having worked on Rails and PHP frameworks such as CodeIgnitor and CakePHP, It was never a question of If, but when, and the best way to begin would be use your existing skills with webforms and start bringin in MVC Pattern, and before you know it you can be completely taking the benefits out of both worlds.
Webforms with MVC
If you are starting with a new project its really simple, start of with a new MVC Project in Visual Studio Add a New Webform run it and thats it no configuration required, the reason is that because MVC Framework is built on top of same ASP.net platform, it runs and the reason why the routing doesn’t try and hijack this request is because of the way it works, if the physical file of the request exists the request is always made to the aspx file, for better performance and save disk query on each .aspx request you can also add the following line in your global.asax
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }
MVC with Webforms
But most of us never start with new projects right ?, so you have to do a bit more work, Add the following as Reference to your Web Application

Now Update your web.config to reflect
<system .web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> </compilation> <pages> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> ...... </system>
Add the following code to global.asax
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } void Application_Start(object sender, EventArgs e) { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); }
Now Add the Controllers, Views, Folders to the root of application and you are good to go:
Home Controller – /Controllers/HomeControllers.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace WebApp.Test.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } } }
View – /Views/Home/Index.aspx
< %@ Page Language="C#" MasterPageFile="~/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>< %: ViewData["Message"] %></h2> <p> To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>. </p> </asp:content>
You can even use the same Master Page


P.S: The VS Project doesn’t support integrated way of creating Views and Controllers in this method
India is not mature enough to handle Democracy
I was always of the firm belief that the power to manage should be with the people and in back of the mind I always thought that somehow India as a country would prevail on the long run because of the fact that we have a democratic system in place, which though highly red taped still managed to somehow got things done, I have recently understood that its not that things get done because of the greater good but things get done because it is profitable to some person(s), There is no sense of greater good and even if there it is though by only those who do not have any effect what so ever on others, We live in a society where all development is a by product of some body profiteering, In reality profit should have been the by product of development, but the thing that bugs me the most is that we don’t care, I mentioned WE because including me none of us are determined enough to bring changes to the system, we have always found a way to blame others, and we always find a way to blame.
May be this post is also one of the ways I am blaming everyone. In a democracy I am told that all changes begin from Voting, I know that half of India does not vote, its either because they don’t want to or they don’t care, Then those who vote have a choice on voting on who is less corrupt,May be there a few exceptions but in most cases we are limited to these kinds of candidates, And just look at the kind of people who we elect, they ready to use slurs,swears, throw chairs at each other, and do not even hesitate to get in fist fights in assembly, the place where we are supposedly managed, We watch these thing glued to television and make a comment saying that this is shame on the society, but what next ? , Do we take any actions beyond that ?, The counter argument made to this or should I say the alternated presented for discussion only are either we must select the person who is not corrupt and get this person elected or having a say that no candidate is fit enough until we get the right candidate, I don’t think both of these are realistically possible,
We as citizens of this country have no responsibility to our country what so ever, we do not care about how India progresses, All our activism is limited to few actions which are driven by the media, Let me give you a few examples; During the time of Kargil war all of us collected, food, money and more stuff for the armed forces sent it and felt happy, then what ? have we after that cared about the armed forces a day after that, How many of us have at least tried joining the armed forces, In our Country the people who join armed forces are mostly the people who did not find any better options (I know that there are exceptions), we never even suggest people to join armed forces let alone encourage someone, Where is the responsibility to protect our own selves ?, The same thing was also the case during 26th November attack on Mumbai, All of us were glued to Televisions, then took out candle light vigils and that’s about it. No actions further. During the Jessical Lal Mudrer Trail, The media sparked of frenzy of activism which was projected as our social self waking up,What about thousands of cases still pending in the courts and millions more where injustice was served, As I mentioned before all out activism are limited to few actions.
Democracy is not just putting your vote and forgetting about it, Democracy is where you have to have responsibility towards to the Country, Until we get that sense of responsibility, India is not mature enough to handle Democracy.
I have written this post as a starting point of discussion, I haven’t found a way out of the deep mess we are in, and all this is just a starting point to discussion…






