Blog dedicated to Distributed Development on .NET, other .NET related technologies and developer issues.
Saturday, September 14, 2013
Lecturers should use YouTube as a teaching aid
Tuesday, September 03, 2013
Why your software startup should be from the Caribbean
The software development landscape worldwide is segmented (into the following regions):
- Brazil, Russia, India
- China (BRIC)
- Australia
- Pacific nations
- Latin America
- Caribbean
Australia and Pacific nations are involved in mainly advancing their economies because of their size so they have enough to self-sustain. Latin America is similar to some extent to Australia & Pacific nation as there is a reliance on North America & Europe to provide opportunities for innovation. Caribbean is mainly for tourism but nothing else, it is an untapped resource.
Key factors in successful outsourcing operations:
- Technical Ability & Aptitude – Can they do what’s required now and do they have the ability to learn
- Cultural Alignment – Do they understand your company’s values and are able to adapt sufficiently
- Infrastructure – Sound technology (high speed internet and reliable) good roads, banks and security.
- Language - Are they able to communicate effectively with your clients and/or your team?
- Time zone – Can the teams collaborate in real-time with your team (to resolve issues or plan)?
- Travel Time – How difficult is it for your team to get to the team delivering the solution if the need arose?
- Cost – How much does it cost for an ideal developer to deliver the solutions?
- Human Resources – Are there enough trained or trainable graduates passing out of tertiary level institutions to support the growth of the industry?
North America & the Caribbean developer need
- Culturally aligned with their locale – understand and able to add value, for example, advancing conversations with clients beyond just the here and now but where do you need to be.
- Knowledgeable & capable of applying contemporary software development processes (such as Agile) – in order to help clients to understand & prioritize their needs
- Good communicators & possess collaborative skills – the ability to communicate with their internal teams, stakeholders and work together to effectively solve problems
- In access of broadband internet & ICT – robust infrastructure to ensure communication and connectivity to remote resources are not hindered by technology failures or interruptions
- Low costing & high value - what is the price/leverage equilibrium of these resources, can you move these resources to higher skilled work easily or will they forever be technical support specialists or programmers?
- Technologically rich in their skillset – understanding and executing utilizing various technology
- Able to deliver on time and high quality – a culture of delivery excellence
- Travel time - is it possible to get into the country easily? Will your staff be willing to get there in 1-4 hours or 10-20 hours. A critical factor for your highly technical managers, no one enjoys being away from their family for weeks at time but with the ability to quickly travel to your location and be back in a day is awesome.
Overall there are some real opportunities available in the Caribbean. Here are a few companies that have done it:
- RealDecoy made that move a few years ago in Jamaica and by all accounts it was a successful move.
- Medullan Inc also has software resources in Trinidad for a few years
There are also other companies that are utilizing software developers here albeit covertly.
Delton Phillips is the Director of Strategy & Innovation of Particular Presence, a technology company which specializes in starting up software teams and team management for businesses. You can reach him at delton[at]particularpresence.com
Friday, August 30, 2013
Writing Clean Code
- Well structured and organized
- Meaningful variable names
- The code is like reading a story book - seriously
- Utilization of DRY principles
Wednesday, July 10, 2013
Non-Tech Related: Difference between Wheel Bearing and Hub Assembly
Check out this excerpt from PrimeChoice Autos (http://www.primechoiceautoparts.com/t-Hub-Assembly-Hub-Bearing.aspx)
Sunday, June 23, 2013
Content Rules - How to create good content
The Content Rules
1. Embrace being a publisher. - Regardless who you are, you are a publisher!
2. Insight inspires originality. Know yourself better than anyone. Get your brand story straight, and give voice to your distinctive point of view based on your mission and attributes. Know your customers, too, and what keeps them up at night. What are their concerns and objectives? What do they care about? How will your brand help them in their daily lives?
3. Build momentum. Why are you creating? Good content always has an objective; it's created with intent. It therefore carries triggers to action.
4. Speak human. Communicate your brand mission, values, and philosophy in simple terms, using the language of your customers. Speak in a conversational tone, with personality, empathy, and true emotion. Kill corporate-speak, buzzwords, and other language that makes you sound like a tool.
5. Reimagine; don't recycle. Recycling is an afterthought; good content is intentionally reimagined, at its inception, for various platforms and formats.
6. Share or solve; don't shill. Good content doesn't try to sell. Rather, it creates value by positioning you as a reliable and valuable source of vendor-agnostic information. Your content shares a resource, solves a problem, helps your customers do their jobs better, improves their lives, or makes them smarter, wittier, better-looking, taller, better networked, cooler, more enlightened, and with better backhands, tighter asses, and cuter kids. In other words, it's high value to your customers, in whatever way resonates best with them.
7. Show; don't just tell. Good content doesn't preach or hard-sell. Instead, it shows how your product lives in the world. It demonstrates through case studies or client narratives how your customers use your product or service, and explains in human terms how it adds value to their lives, eases their troubles, and meets their needs. Good content is not about storytelling; it's about telling a true story well.[] [] Inspired by Jason Fried, co-founder of 37 Signals and co-author of Rework (Crown Business, 2010), writing in Inc. magazine.
8. Do something unexpected. There's no business like show business, right? Occasionally adding an element of surprise to your content both drives viral sharing and enhances your company's personality. (B2B companies, we're looking at you.)
9. Stoke the campfire. Like a good campfire, good content sparks interaction and ignites conversation between you and your customers, and among your customers themselves, in the social sphere.
10. Create wings and roots. This advice is usually applied to parenting (give your children roots to keep them grounded and wings to explore new worlds). But it applies to content nicely, too: Ground your content solidly in your unique perspective and point of view but give it wings to soar freely and be shared across social platforms, all over the Web.
11. Play to your strengths. You don't have to create everything and publish everywhere; you don't have to do it all inclusively—create killer blogs and podcasts and white papers and webinars and ebooks and puppet shows and whatever else you can imagine. You don't have to do all of that. But you do have to do some things—and, at the very least, one thing—really, really well.
Monday, January 21, 2013
Your career starts BEFORE you get a job
For the last 4 years I've been active in recruiting talent (including authoring technical assessments & reviewing results) for my company Medullan in our effort to find talent particularly Software Developers, Senior Software Developers and Technical Architects. It has been a hard slog.
According to Wikipedia (which is community contributed) the definition of a software developer is
a person concerned with facets of the software development process. Their work includes researching, designing, implementing, and testing software. A software developer may take part in design, computer programming, or software project management.
At my home, if I were looking for a plumber, what would be some of the expectations I would have? I think one basic expectation many of us have is, if someone says he's a plumber (even one straight out of plumbing school) they'd be able to fix a facet but probably not be able to design a septic system.
In designing technical tests I design the tests in such a way that only those who have been practising any form of software development can pass. For example, write an algorithm to enforce the rules of a tic-tac-toe game in 30 minutes. If you aren't actively practising you can't pass it.
What do I suggest?
Write applications for writing an application sake. For example, at my home in the hills of Jamaica I've been freezing every night and it's always a joy to start the car in the morning to see the thermometer reflecting 68F temps (yes I know Boston is colder, this is cold for us) and telling my wife. Wouldn't it be cool to create an application to store the temp everyday and just generate a chart every month.
This may sound lame but the problems you'll face in building applications like this (data connectivity, handling arrays and testing your application) will be very similar to the scenarios you'll face in your day to day work life and WILL get you through many technical tests. If you're not creative enough to think of any ideas check out sites like topcoder.com or elance.com and just grab the ideas and develop them, even if you're not entering a competition or bidding for jobs.
My final word is, you can't say you're a software developer and haven't written code in months. It's similar to a student leaving school with an accounting degree and is practicing no accounting, it just doesn't make sense.
Tuesday, August 14, 2012
Windows 8 Preview - VMWare Player

Wednesday, August 08, 2012
Developer Openings in Jamaica
Sunday, July 15, 2012
Windows Phone 7 3G Digicel Jamaica
Tuesday, July 10, 2012
Dell Latitude Web Cam Central
Sunday, July 01, 2012
Monday, August 01, 2011
Smarter Searching on MSDN

I also found that it doesn't discriminate check out my search for Groovy content. Seems like an interesting first search site.

Delly
Sunday, July 31, 2011
Convert Minutes to hh:mm in SQL Server Reporting Services

After running a DATEDIFF in Transact SQL to get the number of hours worked in a particular period, there was a requirement to convert that hours into hh:mm format.
In SQL Server Reporting Services there is the ability to write custom functions in VB.NET for your SSRS reports by just going to properties in the report and clicking the Code tab.
Below is the function I wrote.
Public Function ConvertToTimeFormat(DecimalValue as Decimal) As String
Dim hourValue as Decimal
Dim minuteValue as Decimal
hourValue = Int(DecimalValue)
minuteValue = (DecimalValue - hourValue) * 60
Return hourValue.ToString() + ":" + Int(minuteValue).ToString().PadLeft(2,"0")
End Function
So in my report cells i'm referencing my new function using the Code object.
=Code.ConvertToTimeFormat(Fields!TotalWorkedHrs.Value)
Wallah, you're done.
Saturday, June 04, 2011
Invest in Yourself (IIY) - Get good technical resources
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
- iPhone SDK Application Development by Jonathan ZdZiarski
Groovy and Grails Recipes by Bashar Abdul-Jawad
Friday, April 09, 2010
Optional Parameters in C#
Technological Pedigree.
http://weblogs.asp.net/scottgu/archive/2010/04/02/optional-parameters-and-named-arguments-in-c-4-and-a-cool-scenario-w-asp-net-mvc-2.aspx
Welcome C# snobs!
Delly
Rugby Scrum vs Agile SCRUM
The goal of a Rugby team (15 players) is to move a ball from one end of the pitch to the other end (similar to American Football) and plant the ball in the end zone to score. Individualism isn't a big theme in that game. It requires all players working together to move the ball down the pitch. What is a Rugby Scrum?
There's one particular part of the game called a Scrum where 7 players bind together, put the ball in the midst of them, push the opposing teams back whilst advancing the ball forward between their legs. The stronger scrum team would win that battle and would be one of the main contributors to a successful match.
I thought this was about computers? Whilst the origins of the concept of Scrum for Agile is debatable the similarities between the concept in Rugby is eerily similar.
Agile Scrum teams must be Self Organizing. Similar to their counterparts on the Rugby pitch, the clock doesn't stop, there are no time outs, if the coach has some advice he can shout it from the sideline or hand gestures but that's it, the players need to figure out how to adjust to the situation on the ground. What are some attributes of a good Self Organizing team?
1. Communication - teams need to be able to share ideas, concerns or general feelings in a free and easy way. A member of a scrum team should not be afraid to say what they need to say.
2. Everyone's contribution is critical - decisions are made via collaboration with all team members, generally decisions are a consensus from team members.
3. Everyone must see the vision of the project and focus - if the team members don't get where we're going and focus then we won't get there well, people need to have that focus and determination to get the job done and doing it well.
4. Must be co-located - having all these guys in the same room is critical and having lots of whiteboards too. Self organizing teams talk a lot, the need to have a space where they probably won't disrupt other teams. It's also critical that these team members bond, I don't think it can be stressed enough, after a while, strong bonds will develop among the team and you'll have a solid gelled team!
There are probably more I could think of, but this is from my experience.
Delly
Saturday, April 03, 2010
Linq Queries with optional parameters
So here's what I did
IQueryable
personQuery = from obj in ObjectScope.Extent
select obj;
if (firstName != null)
personQuery = personQuery.Where(person => person.FirstName == firstName);
if (lastName != null)
personQuery = personQuery.Where(person => person.LastName == lastName);
if (middleName != null)
personQuery = personQuery.Where(person => person.MiddleName == middleName);
if (ssn != null)
personQuery = personQuery.Where(person => person.SSN == ssn);
if (city != null)
personQuery = personQuery.Where(person => person.CurrentAddress.City == city);
IList
This is the easy way to do it. I'll show you more advanced ways later.
Saturday, May 30, 2009
Tuesday, December 30, 2008
Depends on whose hands it's in - Technological Pedigree
So for this post it's all about the movers and changers in technology, the people who's word matters and with one speech can transform/shape the thoughts of others.
During my years as a developer and growing into other roles such as Snr Developer and team lead, I've been faced with many technical challenges and have proposed many solutions to solving complex business problems, many solutions sad to say have been rejected by peers and superiors who wouldn't support them because of my technological pedigree. What I would always find interesting is that a rep from Microsoft could call, propose the very same thing (without much details) and management would buy in. Why is this? What is this pedigree I refer to?
In my mind, this Pedigree comes from, being there and doing that at the highest level. Many times you really can't earn the adoration and respect from your management teams with emerging technologies and concepts unless you've had a track record with those technologies and/or concepts. In my case it was the Service Oriented Architecture I had proposed to implement in the business to encourage consumption by different business applications. I had conceptualized a subscriber model managed my the support services department which would allow different applications to subscribe to services in this architecture and consume same.
So what are some of the things I've learn't to develop this "pedigree"
1. Study to shew thyself approved, a workman needeth not to be ashamed, rightly dividing the word of truth. - You have to know your stuff and know it well. Know the other guy's stuff too and it'll serve you well. :)
2. Incline thine ear unto wisdom, and apply thine heart to understanding - knowing alone won't do it but understanding how to apply your knowledge is more important. WCF is really cool technology, but what does it mean for businesses?
3. For by wise counsel thou shalt make thy war: and in multitude of counselors there is safety - Seek guidance from those who have been there, done that and have the "pedigree". Don't be too anxious to go it alone.
4. A man's gift maketh room for him, and bringeth him before great men - Don't be a butt kisser! No one can keep down a rising star.
Oh, how did this come up...Anders Hejlsberg added optional parameters to C# and there was a big discussion as to the importance or necessity to have optional parameters. Now the thought is, if someone from our team had suggested it, everyone would have said "Naw...don't neeed it..." but Anders said it...again... depends on whose hand it's in or in this case mouth :)
Delton
Tuesday, April 01, 2008
Talking to the Next Generation
We spoke about the SDLC and variations thereof, it was pretty interesting interacting with these bright, beautiful young ladies. Oh to be young again :-).
In one of our discussions, we spoke about agile software development methodology. That was interesting for me as I realised that as students working in a lab, they do practice alot of the agile methods of development e.g. peer programming.
We went on to talk about the advantages of object oriented over procedural while touching on the benefits of runtime environments such as Microsoft's .NET Framework and Sun's Java Runtime Environment.
At the end, these students gave me a nice fruit basket. I'm enthused and would really love to go back there and hopefully this time help them with their Java assigments.