Taswar Bhatti
The synonyms of software simplicity
SQL
Square Brackets

Here is a quick tip, when you are searching for a text that contains square brackets “[]” in Microsoft SQL Server. For example you are searching for a text that contains “text text text [text] text text”. A simple query using LIKE % would not do the trick.
One has to add double square brackets to search for the square bracket text.

Example

The previous query will not return any match items. But if you replace the query with double brackets like

The above will return you data that match the square bracket text.

startups

team work

Here are 4 tips on Hiring for startups

1) Hire well rounded senior developers.

If you hire junior developers you will end up having a lot of code debt and at the end you will
have to pay back the debt (just like borrowing money with interest). Having well rounded generalist senior developers would alleviate most of the debt but also have a small number of juniors to help out small modules. I have seen companies with 4 seniors do amazing things.

Of course, the initial cost of hiring senior developers is way more than juniors but at the end it will cost you less, since you will have less technical debt.

Also try not to hire specialist. e.g database scaling pro (DBA), web scaling pro, since you need someone who can jump into any part of the code to fix things (database, network, web, font-end javascript, version control etc), while a specialist may not have that experience.

2) Give Incentive to employees

Early stage startup need to give incentive’s to all the founders. Give equity to the people who work, but do give them by fairness and by giving it in equal portions to their input to the company. By giving them shares or equity, you would create more loyalty from the employees, they would put their heart and soul into the baby (startup).

Don’t forget to create a vesting schedule, overtime give share to the founders they are allocated. e.g first year 30% and over the months the rest of the amount of it, thus it will eliminate if a founder leaves the company of having 50% of the share in the 10th year of the company when they left in the first year.

Example:

  • Founders: 25% up front and the rest monthly over 3-4 years.
  • Employees: 25% after one year and the rest monthly over 3-4 years.

3) Dont’ forget remote talent

It may be hard to hire local talent but remote work is getting very popular. I don’t mean outsourcing by just hiring people from China or India to do the work, maybe the talent is not in your city, maybe in another part of your country, and the developer is willing to work remotely and time to time travel to the startup location to have meetings etc.
I believe this is gaining quite a momentum these days e.g #37signals, #github, etc | https://weworkremotely.com/

4) Always be hiring ABH

In the words of Glengarry Glen Ross speech ABC (Always be closing). A startup needs ABH (Always be Hiring). A startup needs to be always be hiring and looking for great talent, because you may be happy with your team but you never know if someone else would scout your talent away from you.

dotnet C#

Here is another C# tip.
Most of the time when you are trying to get a value from dictionary you would try to check if the key exist or not something like.

But one can use TryGetValue

The benefit of using TryGetValue is that the dictionary is synchronized, there is no race condition.

WPF

Here is a hint when using WPF and you may come into a situation where you want to databind an element to its Parent ViewModel.

ViewModel

As an example lets say you have a view that is binding to ViewModel and inside your xaml you have a control that has DataTemplate
The code Below we are using the BusyIndicator from https://wpftoolkit.codeplex.com/

Our ViewModel looks like

We would assume that the property would bind, but actually it doesn’t since the datatemplate is there.

So what we need to do is bind it to its parent viewmodel

What we need to provide is RelativeSource and the AncestorType, below we are using UserControl but it could also be Window or a provided type like AncestorType={x:Type XYZObject}

iis8

If you are running Windows Server 2012 with IIS8 and you got this error HTTP Error 500.19 – Internal Server Error. If you web.config file contains “handler” or “modules” tag.

In order to fix this, launch cmd or powershell and execute these 2 commands inside of C:\Windows\System32\InetSrv

This will unlock the handlers and modules section.

dotnet C#

In C# there is a params keyword which allows a method parameter to take variable number of arguments. MSDN

Some notes on param

  • It must always be the last parameter in the function/method definition
  • There can only be one params keyword in a function/method parameter signature

Example:

But by changing it to params we can change the call and simplify it

There is no performance bottleneck in using params because the compiler is basically changing your code into an array for you, thus it is basically just syntactic sugar for C#.

phantomjs

Thanks to everyone who came out last night at OttawaJS for the phantomjs talk, the slides are located at slid.es.
You can find the code in my github account. https://github.com/taswar/ottawajs-dec2013

A recap of things we covered:

  • Simple screencapture
  • CoffeeScript with phantomjs
  • Scraping hackernews and dzone site for links
  • using webdriver to integrate with phantomjs (python and ruby)
  • Using remote webdriver to integrate phantomjs with jruby
  • Rails app with phantomjs integrated to take screencapture
dotnet C#

In C# there is the out parameter keyword which causes arguments to be passed by reference. It is like the ref keyword, except that ref requires that the variable be initialized before it is passed.

Example:

The out parameter keyword provides a way for a method to output multiple values from a method without using an array or object, since the return statement only allows one output, by using out one can return multiple values.

Last but not least I personally do not recommend using out keyword and also from
The Framework Design Guidelines it also recommend to avoid using out. If you have multiple returns use an object that wraps around the value is a better design.

dotnet C#

In C# when using the ref keyword it causes an argument to be passed by reference, not by value.
In order to use a ref as a parameter, both the method definition and the calling method must explicitly use the ref keyword, and also the variable must be initialized before passing in.

In the example below we have two methods, one using the ref keyword the other not.

But what about objects that are reference types. Here is where the confusion starts that the concept of passing by reference with the concept of reference types, the concepts are not the same. A method parameter can pass in a ref type regardless of its type (value or reference).

Below is an example that shows when a Person object reference type is used.

Last but not least I personally do not recommend using ref keyword and also from
The Framework Design Guidelines it also recommend to avoid using ref.

Framework Design Guideline

dotnet C#

.NET provides in its System.IO namespace the Path class which performs operations on String instances that contain file or directory path information. These operations are performed in a cross-platform manner.

Most of the time we see develeopers writing code like

But by using Path.Combine we can provide a cross platform path

By using the Path and Combine method, one can at least eliminate some of the headache of porting to another platform.

UA-4524639-2