Friday, October 21, 2011
Help Desk Support: Outsource or keep in house?
E-mail: Outsource or keep in house?
Size
- If you have less than 50 people in your company, you should use a hosted service.
- If you have more than 250 people in your company, you should have in-house e-mail systems
- If you already have an in-house IT staff, servers at a high-quality data center, and are used to providing 24x7 services, you should probably bring the e-mail system in house
- If you have custom applications on your network that send and receive e-mail, you should probably bring the e-mail system in house
- If all your servers exist in your offices and those offices have only basic batter backup, basic access to the internet, and you do not have IT staff with e-mail experience, you should use a hosted service
Hosted Solutions
- If you have employees that are not techies (meaning that they just want Outlook to work and don’t care about anything happening in the back) then you should get a Hosted Exchange service with spam filtering and ActiveSync access for smart phones.
- If you have people who already use Google docs, like experimenting with new things, and are generally self sufficient when they have IT issues, then it generally doesn’t matter what e-mail system you use. However, Gmail seems to offer the best deal for this time of office culture.
In House Solutions
Tuesday, October 18, 2011
Things that you should insist that your programmers NEVER do
- Functional Specs are Useful: Quite a few developers hate specifications – hard to write, hard to read, hard to use, and rarely useful. For many technical specifications, these developers are extremely well justified. Joel Sploksy offers an alternate view of specifications that is far more useful. By creating a written description of what a program is supposed to do (a functional specification) instead of how a program is supposed to be built (a technical specification) you get the chance to provide useful information to your developers. Read Joel’s multi-part description how to do that, then read The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper, and start writing documents that actually help your development projects
- Internationalization from the Beginning: Over the past two decades, every business article, magazine, web site, and book has been talking about how the world is flat and every business is competing on an international playing field. So why do I keep finding software that won’t install in a Japanese-language Windows PC? Why do websites turn 日本語 into ??????? Even though you don’t see need to support international languages now, you can make sure that your developers don’t shut the door early. I recommend that you start your development effort with a requirement to support multiple languages and force them to explain why they shouldn’t. I’m sure there are legitimate reasons for English only but make them justify it.
- Real Testing Hurts: When developing on your own laptop and connecting to a server that is down the hall, you are sitting in an almost perfect environment. Don’t let your developers test in a perfect environment – you won’t learn anything. For example, if you want this new application to work over the internet, you had better test it over the worst connection you can find. As Jeff Atwood points out, performance of your application in the real world is a make-or-break moment. You should make sure your developers run things in high-latency, low-bandwidth, sub-optimal environment or you may be in for a big surprise later. The internet is not new and the internet is not an optimal network.
- ASCII Text is NOT Enough: I think all developers need to read this article from 2003 about how to handle text. Even though the internet enabled, international business era is old news, it is surprising how many different systems mange non-ASCII text. Even my iPhone 4 occasionally takes a Japanese language website and renders it as some odd collection of wingding symbols. In addition to the point about internationalization of installation, make sure that your custom development doesn't manage non-English input. After all 田中一路様 is unlikely read mail addressed to ????????
- Things Break – Handle It: When you are working with complex systems, you have many different points of failure. It is a given that during the life a particular system that some key part will fail and it is up to your developers to handle it. To quote the Netflix developers “Each system has to be able to succeed, no matter what, even all on its own. We’re designing each distributed system to expect and tolerate failure from other systems on which it depends.” That particular team took it to extremes but since they were designing a massively mission critical system, it was worth it. When starting your development project you need to explain to your developers how much robustness you need for this project. If you let the developers pick you may not be happy with the results since they are likely to look at it from the “how hard is that to program” level and not the “how important is that to the business” level.
- Size Matters in Development: Test data is more dangerous than you might think. It is common for developers to use a very small set of test data in the database and run all tests against that smaller database. However, if your final system is going to massive, multi-server, multi-site, thousands of users then you had better make sure the pre-deployment testing is performed on a larger system. Jeff Atwood has a great explanation of the risks and how to avoid them that you can probably just hand directly to your development team.
Project Management Across Time Zones
- Clarity in references: When assigning a task for “end of the day, Tuesday” make sure you explicitly say what end of who's day you mean. “Due to the telephone call with Atlanta, please send me that document before 8pm Tokyo time (1pm Paris time)” is more likely to be understood than “before lunch”. Referencing the other person’s time zone is probably best but if there are multiple locations, using UTC or GMT time is better. When using UTC / GMT time, I tend to use 24-hour / military time for additional clarity. That may just be me, though.
- Clarity with schedule constraints: If there is something that needs be done before an Asia office opens for the day, it should be made clear to people in later time zones. Especially in the IT world, people think that midnight on Sunday is an excellent time for routine maintenance and may not realize that your Asia offices is already open for business on their Monday morning. Combining this with the previous tip, “Make sure that this patch installation is complete at all sites before 23:00 UTC on Sunday, October 23rd, to avoid conflicts with the Tokyo office” would be a good way to tell team members of a schedule constraint.
- Clarity with dependencies: The time lag affects decisions as well. If an office needs to receive a decision from a manager the “early” office in order to work, the “late” office could waste a day, have people sitting idle, or miss deadlines if the manager didn’t know that people are waiting.
Even with all the challenges, you can leverage the power of time zones for a project. Having other people working while you sleep can really speed things along and reduce total durations. The key to this, like many project related efforts, depends on communications and collaboration. As long as the work is broken down to easy to manage work packages, there should be a way to hand-off task between teams. If your WBS is really detailed, the hand-off can probably happen with just simple e-mails or status reports but it is likely that some sort of hand-off meeting will be necessary. The time commitment, attendees, and frequency of the hand off meetings will vary a lot but I find that IT related projects need meetings between project managers on a daily or three-per week basis for 15 minutes over the phone at a minimum.
Global project teams can really accomplish a lot if well coordinated. Multiple time zones add complexity but by paying attention to schedule details, you can come out ahead.
Friday, October 07, 2011
Dear Web Programmers: Not everyone has a ZIP code
Friday, June 11, 2010
Probably going to shut this down
Tuesday, December 15, 2009
SharePoint Breadcrumb Oddity
It turns out that some of the default publishing layouts "blank" the placeholder I was using to control the breadcrumb navigation. Once I inserted my own and moved the place holder somewhere esle, everything was fine.
Odd...
Thursday, December 10, 2009
Creating a site banner with the Content Editor Web Part
NOTE: This article is intended for people who are really, really, really picky about the look and feel of their SharePoint site (like me). I am going to show a level of detail that is unimportant to 95% of the population.
For those of you with web design experience, you have probably created splash pages and page banners for other websites and may want to add one to your SharePoint site. There are several ways to create a banner for your site - the simplest is to just create an image and then use the Image View Web Part. You can use Paint.NET, GIMP, or other image editing software to create a GIF, PNG, or JPG image that you then upload and display.
However, an image is a fixed-width image that may or may not line up with other things on the page. Also, if you need to change the text or change the width, you have to fire up the image editor (again), change the text (again), export the image to PNG (again), upload it (again), and then repeat for every little adjustment. This especially annoying for typos - but maybe that is just my problem.
There are probably some of you saying "If I was going my own page, I would just put a background image behind a table or something, and then put text in front" which means you can change the text as without using an image editor. But you can't do that with SharePoint - or can you?
Actually, you can - if you are a little bit careful.
You can use a Content Editor Web Part to display something close to raw HTML code. There are only a couple of things you need to keep in mind:
- Close your tags PERFECTLY - if you open something, close it. Do not leave an un-closed row, table, SPAN, or DIV.
- Match your tags PERFECTLY - don't close something you didn't open. SharePoint has a lot of nested tables so if your code has an extra </table> tag, things can get very interesting.
Now, I will show you an example. For this site, I knew that I, as a site collection administrator, had a large number of tags across the top of the screen and I knew that a regular visitor would not. So, what I saw would be different than a regular visitor. In order to accommodate that, I wanted a banner that "expanded" to the left and right to fill the space of the column.
First, I created an image and "faded" to one site to a solid color. I use Paint.NET for my image editor because it is open source and quite flexible. Paint.NET also gives me the hex code for the color I used on the image. I can simply copy and paste the color code into my CSS markup.
In this example, I created a image that is designed to displayed on the right and is tall enough to not need repeating vertically. Upload the image to a document library on your site and copy the full URL to this image - you will need it in your CSS markup, too.
Create a new text file and start out with a simple table layout:
<table cellpadding=0 cellspacing=0 border=0 width=100%>
<tr>
<td width=100%>
</td>
</tr>
</table>
This table layout gives you table with a single cell. If you are an HTML or CSS purist, you probably hate me right now since I am using tables to control page layout. However, SharePoint runs on nested tables so it simply easier to keep going with the existing system.
Next, you need to add inline CSS to the TD tag to add your background image. Here is the markup I used to push the image to the right:
<td
style="background-image: url([Insert your path]/PublishingImages/banner.png) ;
background-repeat: no-repeat;
background-position: right;
background-color: #E5E5E5;"
width=100%>
In line CSS needs to be enclosed in a single string. Each specification needs to be terminated with a semi-colon.
background-image: url(PATH); - you need to enter the path to the image you uploaded.
background-repeat: no-repeat; - will show the image once. There are other options available if your image needs to be repeated to form a pattern
background-position: right; - should be self explanatory. There are other options available.
background-color: #E5E5E5; - this is the light grey that is my "fade" color. This is what allows the cell to change width but still look like a single item.
Then, I added text into the cell. I added inline formatting for my text as well, but that is completely optional.
<p style="font: small-caps bold 1.5em; padding: 10px; ">Redesign and Improve - 2009</p>
<p style="font: bold 2.0em; padding: 10px;">IT Portal v2.0</p>
Then, save the text file to a document library on the site just like you did for the image file and copy the full URL the text file, too. Edit your page and add a new Content Editor Web Part. Use the option to point to the text file that you just uploaded.
There are a couple of advantages of using the text file instead of just entering HTML straight into the Content Editor Web Part:
- If you delete a text file, it goes to the site recycle bin. If you delete a Content Editor Web Part, it is permanently deleted.
- You can enable versions in the document library, you can roll back changes
- You can reuse the HTML code in a text file on many pages.
Wednesday, December 09, 2009
Found a great SharePoint CSS reference
CSS Reference Chart for SharePoint 2007 (Microsoft Office SharePoint Server 2007 and Windows SharePoint Services v3)
She has a bunch of other articles about branding and CSS tricks on her blog as well. Definately going to bookmark that one.