IT Services
   Web Sites
   Custom Solutions
SharedView lets you connect, share, review, and update documents with up to 15 people in a session in real time. Anyone can share, and the person sharing can give control to anyone else as long as they have  downloaded the current release of this program.

Audio support is not currently available, so a telelphone call or an instant messaging program that supports Voice over IP (VoIP) can be used.

Microsoft SharedView & Dimdim are yet to be listed on Wikipedia's article on comparison of remote desktop software.




Executive Summary: Introspection on how to cut corners for the initial launch of a public application with reference to Nate Kohari’s recent post on the subject.

As we amble forward on our little private venture, there are a number of applications and companies we watch closely. It’s hard to say whether we want to emulate them or if our philosophies naturally align and we’re attracted to like-minded people. Maybe a bit of both.

One of those applications/companies is AgileZen. From the measured approach to features to the deliberate way the user experience falls into the background, we not only use the product, we often look to it for inspiration. Sort of a “What would Nate and Niki do?” approach.

I read Nate’s account of the time before and after launch which a lot of nods in recognition. The almost universal message we’ve been given by people both successful and unsuccessful in building a public application is (and I’m quoting verbatim from one of them): “Just launch the &*%$ thing”.

This is what I thought about while I read the part in Nate’s tale about cutting corners. Initially, there was a lot of kludge and after launch, he rewrote almost every line of JavaScript.

He makes no apologies for this nor should he. It is, I think, a valid decision for a product like his (and ours). Provided you’re smart about it. Recognize where the crap is and isolate it and make a concerted effort to go back to it after you have money coming in. The point he makes is:

Before we could afford to spend a lot of time to make the software maintainable, we first had to prove that we would actually have to maintain it – we had to make sure that we actually had a market.

It’s something I’ve wrestled with a little, especially as we had a learning curve of using an unfamiliar technology. How far do we cut corners? Forego UI tests? Unit tests? Proper separation of concerns?

My partner is a little more battle-scarred in this area and he was pretty adamant that we keep this reasonably maintainable from the start, even if it takes longer to write code, which it inevitable would. Which means we would have to sacrifice something on the iron triangle (or the lesser known Pewter Scale). But that was an easy choice. We wanted relatively high quality and to deliver on time and we were constrained by budget. That left scope as our only real variable. And I love me some restricted scope. Features are, to my mind, the only aspect of the triangle worth arguing over.

But back to the quality aspect. I’m speculating but I suspect we didn’t cut as many corners as Nate did. Or maybe we just didn’t cut the same corners. Though I won’t claim anywhere near 100% code coverage, we have a great many unit tests. And as part of our process, no story can be marked complete unless it’s been code reviewed by at least one person. What’s missing so far is a formal QA person, which is a matter of not having the resources (or put another way, not placing a high enough priority on it based on the resources available to us), and a UI testing process, which is near the end of prototyping thanks to Winnipeg’s best kept secret.

So the question is, did we hurt ourselves but placing an undue focus on quality aspects of the process we didn’t need to?

I have no idea. And while it makes a nice, lengthy blog post, in the end, I haven’t been stressing about it much (at least not until I read the blog post; thanks for nothin’, Kohari). But here’s the position we’re in: We’ll be releasing beta next week and our first order of business is to start looking at new features, which we will release at regular intervals (at least bi-weekly, if not more often). We have no refactoring to do because our codebase is exactly where we want it to be architecturally.

The difference is we’ve lost a month-ish worth of income. And at the moment, that income is still a big unknown. AgileZen could have launched to a whole lot of nothing in which case, Nate would have chalked it up to experience and thanked his lucky stars he didn’t invest any more time than he did in it. We may do the same and realize that we should have launched sooner so we hadn’t sunk any more effort into it.

There’s an element of faith involved though. Maybe it won’t catch on but I really believe it will. And if I plan to be looking at this code for the next five to ten years or more, I like the fact that we put a little extra effort into it early on.

Another nice side effect of this is that it’s helped defined the culture of our development team to a large degree. It helped us to build the team we have and by setting the ground rules early, it’s helped us maintain a high standard so that it’s almost become second nature by now.

Man, this blog is saving me a ton of money in psychologist fees.

Kyle the Clear-headed



Google is taking site’s loading speed into consideration in determining its ranking. Even though this will not land a big impact, it is still something we (webmasters) should really look into. The reason is pretty simple – majority of visitors are usually in rush and no one is fond of waiting half a century before the website finally load its content or failed to load.

preview 18 Website Speed and Performance Checking Tools

In another words, if your site is slow, you are subjected to lose a lot of visitors. Visitors are traffic, traffic affects reputation and they can potentially generate revenue. It can be a domino effect if one ignore the consequences of a slow-loading site.

It is essential to identify what builds up your website before you jump into the codes trying to speed things up because it cannot be done without knowing the culprits that are slowing down your website. This article compile a collection of useful web service and tools that will help you to diagnose and analyze you site, allowing you to understand your site better.

Web Services

Pingdom

Test the load time of all Website objects (html, images, Javascript, css, iframes and others). You can also check how fast every element of your Website load and improve the slow-loading items. At the summary of test results, you see the report of the site loading time, loading time of each element, element sizes and the total number of elements.

Pingdom

GTmetrix

Combines two of the most popular Firefox performance add-ons – Yslow and Google Page Speed. Gtmetrix gives you suggestions what you need to improve your website. Although Yslow and Google page speed are recommended for Firefox, it can also be applicable to other browser.

Gtmetrix

Light Speed Now

Test your website speed performance, and get the report sent to your inbox.

Lightspeednow

Load Impact

Loadimpact is a very important tool for large Website visited by tens of thousands visitors each day. A free account allows you to check the loading impact with 50 simulated users, anything more you’ll have to upgrade to a premium account.

Loadimpact

Site-Perf

Site-Perf fully emulates natural browser behavior downloading your page with all the images, CSS, JS and other files – just like a regular visitor and on the report you can see Website page loading what files start loading at first and how fast. It as very useful performance report to find elements that you need to improve your Website loading time.

Site-Perf

WebWait

Benchmark your website or test the speed of your web connection.

WebWait

Gomez Networks

Conduct a real-time Instant Test for an individual Web page to test its performance from an external node location.

Gomeznetworks

OctaGate

Allows you to monitor how long it takes for a user to download one or more of your web site pages.

Octagete

Webslug

Allows you to compare your website’s speed against your competitors.

Webslug

WebToolHub

Gives you the option to understand how your page is loading with different visitor’s Internet connection speeds. With Webtoolhub you will get information about page size, loading time with different Internet connection speeds and will get information about all Css, Javascript and Images that are used on page. Nothing more nothing less: all that you need for basic page speed test.

Webtoolhub

IWebTool

Iwebtool gives you the option to compare up to ten pages in same time. You also can check homepage, categories or posts loading time with just one click.

Iwebtool

Searchmetrics

Shows the duration of a given website. This value can be used for showing how long a website take to load and if it is better to optimize the website or change a (slow) ISP.

Searchmetrics

BrowserMob

Get performance data on any website on the fly without having to create a test script.

BrowserMob

Applications

Pylot

Open source tool for testing performance and scalability of web services. It runs HTTP load tests, which are useful for capacity planning, benchmarking, analysis, and system tuning.

Pylot

Google Page Speed

Page Speed is an open-source Firefox/Firebug Add-on. Webmasters and web developers can use Page Speed to evaluate the performance of their web pages and to get suggestions on how to improve them.

Google Page Speed

YSlow

YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages.

Yslow

PageTest

Internet Explorer plugin that visually displays the underlying requests made by the browser for content. It also provides suggestions on how to improve the performance of the measured page.

Pagetest

Multi-Mechanize

Multi-Mechanize is an open source framework for web performance and load testing. It allows you to run simultaneous python scripts to generate load (synthetic transactions) against a web site or web service.

Multi-Mechanize

(bellefoong)





Computer hardware can go wrong anytime. If your mouse ever conks out, your keyboard can turn a saviour. Mouse Keys is an accessibility feature present in a various Windows versions that can let you control the mouse pointer with the keyboard.

You can press left ALT + left SHIFT + NUMLOCK keyboard shortcut to turn on or off  this feature. Once activated, the Mouse Keys icon will appear on the taskbar. You can then navigate in different directions using the numeric keypad's arrow keys. If it feels too slow at first, that's because most of us use the mouse so extensively that it makes us handicapped without it.

As this Microsoft Support article informs almost all keys in the numeric keyboard can mimic some feature of the mouse

Press the 5 key for a single mouse click and the plus sign key (+) for a double-click.

To drag an object, place the pointer on the object and press the INSERT key to begin dragging. Press DELETE to release the object.

To drag an object, place the pointer on the object and press the INSERT key to begin dragging. Press DELETE to release the object. 
By memorizing & practising these keyboard shortcuts alongwith those of popular applications, you may be able to improve your productivity & possibly dazzle those around you with your keyboard skills.




Here it is, our winners for ShortrunCard custom-printed plastic cards contest. Sorry for the slight delay!

shortrun Winners of: Custom Printed Plastic Card Gift Cards

A little recap of what the winners will be getting before we announce the list. 3 winners, each getting a $200 gift card, $100 gift card and $50 gift card, courtesy of ShortRunCard. These gift cards can be used to order customized plastic cards.

Some of you raised the concern whether this includes the shipping fees – the answer is yes/no. Assume you won the $200 gift card, and your total bill plus shipping is $210; after redeeming with your gift card you will only pay $10 extra.

Without further ado, here are our winners!

  • Ebta ($200 gift card)
  • Swat Chap ($100 gift card)
  • Shawn ($50 gift card)

(ref)

More giveaways coming up!

We’ve got more contest and giveaway coming right up. Stay tuned – subscribe to the RSS feed, become a fan in Facebook or follow @hongkiat on Twitter to be amongst the first to know.



I'm presenting at ADNUG next Monday on the 13th.  By request I'm going to expand on one of my old MSDN articles:  Functional Programming for Everyday .Net.

It's not up on the ADNUG site, but here's the abstract:

Functional Programming for Everyday .Net Development

Forget the silly Fibonacci sequence examples and abstract math problems, how do functional programming techniques help me do my job with typical enterprise development projects?  In this talk I'll look at places where it's advantageous to compose code with first class functions instead of objects.  I'll show how to use Continuation Passing Style to achieve lower coupling in your code internals by getting closer to  the "Tell, Don't Ask" ideal.  Finally, I'll show how passing blocks can be a way to formulate API's that result in less code for the consumer to write, more readable code, and fewer errors.

 

I *think* I submitted this talk to CodeMash as well, so there's a chance I might give this talk again in January there.

 

Don't worry, I'm still on my side-project break so I haven't done anything whatsoever to prepare yet:)



Issam Lahlali, the CppDepend development leader, just wrote about new interesting things in MFC 2010. The results are obtained by comparing with CppDepend the MFC 2010 C++ codebase with the previous version. Enjoy!



Vintage design is always described as outdated, old looking design with most updated products like Facebook or Nintendo Wii featured… what?

preview Vintage Advertisement of Modern Technology

Yeah it’s not a typo, I mean it, and you’re gonna witness 24 modern products adapted into vintage style advertisement. Some of them are created by modern designer, yet others are modified directly from genuine vintage ads originated from your parent’s era.

So get amused, get inspired, who knows vintage might be the design direction for your next viral ad campaign!

Social Media

Facebook

“Striking, miraculous social team-up!” Designed by advertising agency Moma.

facebook Vintage Advertisement of Modern Technology

Skype

“The fabulous voice system able to put your family together.” Designed by advertising agency Moma.

skype Vintage Advertisement of Modern Technology

Twitter

“The sublime, mighty community with just 140 letters!” Designed by advertising agency Moma.

twitter Vintage Advertisement of Modern Technology

Youtube

“Send and watch splendid and captivating films, 24/7.” Designed by advertising agency Moma.

youtube Vintage Advertisement of Modern Technology

Gaming Console

GameBoy Advance SP

“Gonna be an exciting night… ;)” Adapted by photality.

gameboy advance sp Vintage Advertisement of Modern Technology

Guitar Hero

Have a rockin’ Christmas! Adapted by Partyshot.

guitar hero Vintage Advertisement of Modern Technology

Nintendo Wii

“Meet the amazing Nintendo Wii.” Adapted by gugacurado.

nintendo wii Vintage Advertisement of Modern Technology

Nintendo Wii & Guitar Hero

“Amaze your friends with heroic guitar music!” Adapted by steveRS.

nintendo wii and guitar hero Vintage Advertisement of Modern Technology

Playstation 3

“The simple rule ‘Homework first – Playstation second’ has solved the problem in thousands of homes.” Adapted by larzuc.

playstation 3 Vintage Advertisement of Modern Technology

XBox

“Back in the Fifties, I always wanted one of these.” Adapted by WhoElse.

xbox Vintage Advertisement of Modern Technology

Computer

IBM ThinkPad T22

“Women know what they want. ;)” Adapted by cccvrcak.

ibm thinkpad t22 Vintage Advertisement of Modern Technology

iMac

“Beauty. Brains. And now more brawn.” Adapted by ShayLaVie.

imac Vintage Advertisement of Modern Technology

Macbook Pro

“Pure beauty. Pure power.” Adapted by chrisulloa.

macbook pro Vintage Advertisement of Modern Technology

Power Mac G5

“All computers are not created equal.” Adapted by fxchick.

power mac g5 Vintage Advertisement of Modern Technology

Music Device

iPod

The extraordinary iPod that brought back Apple empire. Adapted by tahias.

ipod Vintage Advertisement of Modern Technology

Mobile Phone

Handphone

Perhaps it’s a Sony Erricson phone, but the ads is quite fabulous and amusing. Adapted by RebelD0g.

handphone Vintage Advertisement of Modern Technology

Nokia

It’s Nokia! Adapted by brypro63.

nokia Vintage Advertisement of Modern Technology

Nokia Cellphone

Surely cellphone is better. Adapted by kawabunga2002.

nokia cellphone Vintage Advertisement of Modern Technology

Samsung Smartphone

“Think mobile. Think Samsung smartphone.” Adapted by nicootje.

samsung smartphone Vintage Advertisement of Modern Technology

Automobile

Chevrolet Silverado

By far the best blending work I have witnessed from this series of ads. Adapted by Gavh.

chevrolet silverado Vintage Advertisement of Modern Technology

Ford Mustang

“Because it’s a better car.” Adapted by abbott567.

ford mustang Vintage Advertisement of Modern Technology

Hummer

“There’s nothing like a new car for gayety.” Adapted by mayfae.

hummer Vintage Advertisement of Modern Technology

Scion

“So if you’ve wanted to buy a car that sticks out a little, you know just what to do.” Adapted by unrealcity.

scion Vintage Advertisement of Modern Technology

Segway

This can surely change the history of automobiles. Adapted by DocMinor.

segway Vintage Advertisement of Modern Technology

Household Appliance

Roomba

Just because your wife deserves the best. Adapted by MeanMrMustard.

roomba Vintage Advertisement of Modern Technology

Washing Machine

“My grandmother would of loved one of these back then.” Adapted by mehere.

washing machine Vintage Advertisement of Modern Technology

More Vintage

Looking for more vintage design or create your own? Well you came to the right site!





Way back in 2004, a project I was working on required a web page to be exported as a Word document (.DOC). Without relying on any components, I utilized the Office XML & HTML technique to implement this feature. I posted my sample on CodeProject to seek feedback. Over the years, I've received some generous comments & feature requests. Many wanted to know how to add a header & footer to the dynamically generated Word document.

With the help of the Microsoft Office HTML and XML Reference, I devised a hack to add a lacklustre header and/or footer. Some folks wanted to customize the contents of the header & footer but when they tried with my hack that offered limited functionality, the header/footer text showed up in the document body to their annoyance. This July, an ingenious developer posted a hack that can overcome this problem, in the Comments section of my CodeProject article. His practical workaround was to pack the duplicating header/footer text inside a table & push it off the page's dimensions with CSS.



For those interested, I adapted his VB.NET snippet into a complete sample in C#. Instead of using a ASP.NET webform as I did in the original code sample in the article, I have used a Generic Handler (.ASHX) to dynamically generate a Word document as it is more suitable for this purpose.

<%@ WebHandler Language="C#" Class="Handler" %>


using System;
using System.Web;
using System.Text;

public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
StringBuilder sbTop = new System.Text.StringBuilder();
sbTop.Append(@"
<html
xmlns:o='urn:schemas-microsoft-com:office:office'
xmlns:w='urn:schemas-microsoft-com:office:word'
xmlns='http://www.w3.org/TR/REC-html40'>
<head><title></title>

<!--[if gte mso 9]>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>90</w:Zoom>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml>
<![endif]-->


<style>
p.MsoFooter, li.MsoFooter, div.MsoFooter
{
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 3.0in right 6.0in;
font-size:12.0pt;
}
<style>

<!-- /* Style Definitions */

@page Section1
{
size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in ;
mso-header-margin:.5in;
mso-header:h1;
mso-footer: f1;
mso-footer-margin:.5in;
}


div.Section1
{
page:Section1;
}

table#hrdftrtbl
{
margin:0in 0in 0in 9in;
}
-->
</style></head>

<body lang=EN-US style='tab-interval:.5in'>
<div class=Section1>
<h1>Time and tide wait for none</h1>
The quick brown fox jumps over the lazy dog
...
...


<table id='hrdftrtbl' border='1' cellspacing='0' cellpadding='0'>
<tr><td>
<div style='mso-element:header' id=h1 >
<p class=MsoHeader style='text-align:center'>Confidential</p>
</div>
</td>
<td>
<div style='mso-element:footer' id=f1>
<p class=MsoFooter>Draft
<span style=mso-tab-count:2'></span><span style='mso-field-code:"" PAGE ""'></span>
of <span style='mso-field-code:"" NUMPAGES ""'></span></p></div>
/td></tr>
</table>
</body></html>
");

string strBody = sbTop.ToString();
context.Response.AppendHeader("Content-Type", "application/msword");
context.Response.AppendHeader("Content-disposition", "attachment; filename=HeaderFooter.doc");
context.Response.Write(strBody);
}


public bool IsReusable
{
get
{
return false;
}
}
}

To clearly understand the code you would have to download the Microsoft Office HTML and XML Reference which is in .CHM format (as there is no online version of it) & look up the exact meanings of custom CSS properties.

Related links:

HOW TO implement "Download as Word/Excel" functionality through a web page
HOW TO send an email with a Word or Excel file attachment built on the fly
HOW TO generate a Word document dynamically with user submitted text formatted with Free Text Box



<<<1|2|3|4|5|6|7|8|9...>>>