Saturday, September 14, 2013

Lecturers should use YouTube as a teaching aid

Lecturers should use YouTube as a teaching aid

In recent times on line delivery of lessons has become a very popular medium for persons interested in obtaining further qualifications or knowledge – lecturers post notes and resources in a folder where students review, post questions and submit assignments. Throughout my experience, I’ve found the experience to be a really convenient way for knowledge dissemination as there’s no requirement to attend a physical building at a fixed time and there is the ability to really carry on with your life whilst achieving your goals.  

Schools.com quoted a report from a company called Marketdata Enterprises Inc which reported that on line education accounted for 30% of all post-secondary education enrolments with an expectation that it will grow to 37% by 2015. Now with all that being said do you feel that the current approach to online education is sufficient to deliver some technical content? In a typical ‘brick-and-mortar’ class you could go to a tutorial, the library or study groups; for online not so much online.

Have no fear, YouTube is here!  In my opinion the perfect support structure is YouTube, for my most difficult courses as there are well qualified lecturers who provide a different approach to teaching the same topic and probably geared towards your learning style. Universities such as MIT, Stanford, UC Berkeley, UCLA, Yale and Columbia have been using YouTube for a while now, the site OpenCulture.com provides free cultural & educational media on the web and has created a list of “10 University Collections on YouTube” which showcases some of the institutions I mentioned above and their YouTube channels, check this link out 

For me, I’ve found lectures or presentations that explained clearly to me concepts that I couldn't understand on my own or from reading 60 pages each week for each course. I would recommend that all lecturers provide suitable content via YouTube videos and have them as apart of their teaching arsenal as these videos will explain the concepts and provide students with the opportunity to comment thus giving feedback or asking questions in the context of the lecture.  YouTube proved to be very useful during a CISCO Routing & Protocols through a YouTube channel called VambarInc. This made reading the content so much more pleasurable; just sorry I never thought about this in Psychology class, what was Freud saying anyway, Phallic Mallic!... Ok I got it now… hmmm… just checked YouTube, very enlightening. 


 I’d love to hear what some of you think, do you think intermittent lectures are enough to be successful or do we need teacher directed content on YouTube to ensure our success? +1 Youtube!

Tuesday, September 03, 2013

Why your software startup should be from the Caribbean

This is my opinion.

The software development landscape worldwide is segmented (into the following regions): 

  • Brazil, Russia, India 
  • China (BRIC) 
  • Australia
  • Pacific nations
  • Latin America
  • Caribbean 
Each of these groups has specific attributes about them that put them uniquely in each space. BRIC nations are involved in high tech aerospace, research and equipment manufacturing. For example Brazil is one of the major players in the industry in the executive jet manufacturing industry with a company called Embraer. Many universities (2,600+) and a need to solve their own problems internally has helped Brazil to grow, in some cases they receive technical specifications from companies in North America & Europe to develop advanced systems to advance those economies and as a spinoff, they have benefited from these investments. 

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: 

  1.  Technical Ability & Aptitude – Can they do what’s required now and do they have the ability to learn
  2. Cultural Alignment – Do they understand your company’s values and are able to adapt sufficiently
  3. Infrastructure – Sound technology (high speed internet and reliable) good roads, banks and security.
  4. Language - Are they able to communicate effectively with your clients and/or your team? 
  5. Time zone – Can the teams collaborate in real-time with your team (to resolve issues or plan)? 
  6. Travel Time – How difficult is it for your team to get to the team delivering the solution if the need arose?
  7. Cost – How much does it cost for an ideal developer to deliver the solutions?
  8. Human Resources – Are there enough trained or trainable graduates passing out of tertiary level institutions to support the growth of the industry?

Below is a matrix showcasing the strengths and weaknesses of the regions, with 5 being most ideal & 1 being least.


North America & the Caribbean developer need

  1. 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.
  2. Knowledgeable & capable of applying  contemporary software development processes (such as Agile) – in order to help clients to understand & prioritize their needs
  3. Good communicators & possess collaborative skills – the ability to communicate with their internal teams, stakeholders and work together to effectively solve problems
  4. In access of broadband internet & ICT – robust infrastructure to ensure communication and connectivity to remote resources are not hindered by technology failures or interruptions
  5. 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?
  6. Technologically rich in their skillset – understanding and executing utilizing various technology
  7. Able  to deliver on time and high quality – a culture of delivery excellence 
  8. 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

Currently doing some work at a client site and had to stop to admire my code, here are some things that struck me about it:
  • Well structured and organized
  • Meaningful variable names
  • The code is like reading a story book - seriously
  • Utilization of DRY principles
One thing about clean code is being able to look at the code, even if you have zero context into the language spec, and being able to understand everything that's going on. 

I would always get a request from developers I manage to work on "more complex code" and every time I painstakingly had to explain that 'complex' code is truly just a composition of smaller components, where things get 'complex' as they like to allude to is when components aren't truly designed (and implemented) correctly. 

Here's a book I recommend if you want to know how to write Clean Code. Learning every pattern in the world is good but having clean well structured code is better. This book is a must have on every developer desk. Check out my blog post about Investing in Yourself (IIY)


Wednesday, July 10, 2013

Non-Tech Related: Difference between Wheel Bearing and Hub Assembly

Wow, this post is not tech related but I got my car checked out a few weeks ago and they reported that I needed Right Rear Wheel Bearing. Sounds simple enough, just go buy a wheel bearing right? Nope, well not really wrong but there's a difference.



Check out this excerpt from PrimeChoice Autos (http://www.primechoiceautoparts.com/t-Hub-Assembly-Hub-Bearing.aspx)

The Hub Assembly or Hub Bearing offers certain advantages over the Wheel Bearing.  It’s an easy decision if you have a bad wheel bearing; if you have the option of purchasing a Hub Bearing Assembly vs. a Wheel Bearing buy the Hub Bearing Assembly.  

Firstly, don't buy an individual bearing, you'll have to press that in yourself. Which seems painful just to think about it. Dirty fingers.


The Hub Bearings primary component is the wheel bearing.  The wheel bearing is a precision machined component which is integral to the safe and comfortable ride of your car or truck

 The hub assembly is a housing that has the wheel bearing and hub already pressed into it.  Installation consists of removing the defective or worn hub bearing and bolting the new Hub Bearing Assembly to the knuckle.



So in a nutshell there's a difference between the two, the Hub Assembly is less stress and pain to install. Thanks to Prime Choice Auto for the explanation


I'll also be trying to install this at home, should be a lot of fun, will be my first big install.

Delly

Sunday, June 23, 2013

Content Rules - How to create good content

Currently reading a book called Content Rules: How to Create Killer Blogs, Podcasts, Videos, Ebooks, Webinars (and More) That Engage Customers and Ignite Your Business (New Rules Social Media Series) - yes the title is very long but the book speaks to 11 specific rules for generating content, check out the summary.
 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

Just got my Windows 8 Preview running on VMWare Player and it's an awesome experience so far. The process wasn't too bad here's what I had to do: - Download the Windows 8 Preview from Microsoft Download This link below was really helpful to getting going once I got the iso down on my machine. Windows 8 on VMPlayer.

Wednesday, August 08, 2012

Developer Openings in Jamaica

Is there anyone currently looking for a full time or part time employment software development opportunity here in Jamaica? If you're interested to know more please drop me a line at dellyjm@gmail.com. If you're someone passionate about solving problems, love writing code and learning new technologies this might be perfect for you.

Sunday, July 15, 2012

Windows Phone 7 3G Digicel Jamaica

On my Windows Phone 7 I was trying to get use Digicel Jamaica's 3G service to browse. Everything was all set, I saw the 3G symbol and was happy, alas, the thing just wasn't browsing. After numerous calls to Customer Care I started to sit and reason it out. I see the 3G sign, so I have the service. It's the browser, I went and did Settings in Internet Explorer then realized that Allow Access to my Location was off. I turned it on and Hallelujah! I can browse! Hope this helps someone WP7 doesn't get much love here.

Tuesday, July 10, 2012

Dell Latitude Web Cam Central

Ridiculous... I found the drivers/webcam software for E5520 Dell Latitude http://www.dell.com/support/drivers/us/en/04/DriverDetails/DriverFileFormats?c=us&s=bsd&cs=04&l=en&DriverId=R230103 Hope this helps someone. Dell is ridiculous that thing could have been so much more simple

Sunday, July 01, 2012

For the last 2 days I enjoyed being apart of a great event called DigiJam 2. We participated in a Sports Hackathon and built a Grails application, our team came 2nd, see the photo below.

Monday, August 01, 2011

Smarter Searching on MSDN

Realized a neat feature of MSDN Search. It searches across multiple sources for information (StackOverFlow, Forums, Docs & Articles) and allows you to filter by Topic and/or Source. So searching maybe this is a good start.




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

Been working with lots of new technology in the last 8 months Grails, ActiveMQ, HTML5 and added to that now managing a team with 7 developers who report directly to me.

In the past my approach to gaining knowledge on Microsoft technologies would be MSDN (believe it or not) and non-MS lot's of Google & free online tutorials but many times I wouldn't be able to find enough information to make me really productive and able to give directions to my team in a timely manner. I finally came to the conclusion, I need access to the experts who can get me the information I need quickly. In my search I realized one key thing about most of the experts, they write books so why am I googling all over the place.

That's when I made up my mind to make a major financial investment in myself... I got a Safari account for a whopping $9.99/month! Now I have access to over 8,000 technical books along with videos, articles and rough cuts... i've had a good time with it so far, tough questions have been answered in minutes and not days on Google.

Here are some of the books i'm reading on their site right now.
  1. Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
  2. iPhone SDK Application Development by Jonathan ZdZiarski
  3. Groovy and Grails Recipes by Bashar Abdul-Jawad


Those are on my bookshelf now but they're others I've read such as
Grails in Action & Pro HTML5 Development.

So my recommendation spend ten bucks :)

Check out Safari's Repository today for the price of a cheap lunch!

Friday, April 09, 2010

Optional Parameters in C#

Optional Parameters in C#... Finally C# has VB-ized. I wrote about this in the past.
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

One of my favorite games as a child growing up was Rugby, I played for my high school team for a couple of years in the position of forward (in particular the second row). (Jamaica Rugby League).

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 i'm doing some work with Telerik OpenAccess and I had the task to write a query that has 6 parameters and the need for any combination of those parameters to be the criteria.

So here's what I did

IQueryable personQuery;

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 personList = personQuery.ToList();

This is the easy way to do it. I'll show you more advanced ways later.

Tuesday, December 30, 2008

Depends on whose hands it's in - Technological Pedigree

Sometime ago, an Assistant Pastor at my church preached a message entitled "It depends on whose hand it is in". He started by explaining a spalding basketball is worth US$29.95 but in Michael Jordan's hand it's problem worth 100 times that. A golf club in my hands is worth US$200 probably but in Tiger Woods' hands it's worth about 100 times more. A promise made by me to you isn't worth it's weight in gold but a word spoken from God is a sure one and could be taken to the bank.

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

Had a very interesting talk today with some students from a prominent high school in Jamaica about the software development industry.

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.