<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-2054313753634403416</atom:id><lastBuildDate>Sat, 17 Mar 2012 20:30:05 +0000</lastBuildDate><category>Mobile</category><category>Development</category><category>Release Notes</category><category>WebCenter</category><category>job</category><category>Time Clock</category><category>Blog</category><title>Engineering TempWorks</title><description>Your looking glass in to the internals of TempWorks development</description><link>http://engineering.tempworks.com/</link><managingEditor>noreply@blogger.com (Paul Czywczynski)</managingEditor><generator>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-1943642443704013564</guid><pubDate>Mon, 16 May 2011 20:30:00 +0000</pubDate><atom:updated>2011-05-16T15:36:05.642-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>job</category><title>Job Position Opening: .NET/C# Developer</title><description>&lt;div class="MsoPlainText"&gt;Minnesota based software development company is seeking a Developer with experience with C#, .Net, CSLA, and Team Foundation. This company develops applications and payroll processing/funding for staffing companies throughout the U.S. The company has one of the best work atmospheres around (arcade/pool room in the break room), along with being able to give your own input into multiple projects throughout the development process. Ideally looking for a Developer that's able to work on their own with minimal supervision.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Candidate will have at least 2 years of experience using:&lt;/b&gt;&lt;br /&gt;&lt;div class="MsoPlainText"&gt;• .NET framework, C#, WCF, Linq, and data access&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;•&amp;nbsp;CSLA or similar rich-model frameworks.&lt;/div&gt;&lt;div class="MsoPlainText" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;• Experience using Visual Studio&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;• SQL Server 2008 database experience&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;• Familiarity with Team Foundation Server&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;b&gt;Position Description:&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="MsoPlainText" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;• Participate as a member of an application development team in the creation of comprehensive and integrated application system designs.&amp;nbsp;&lt;/div&gt;• Engage with clients on new and existing software development projects.&lt;br /&gt;• Design, develop, enhance and support existing applications.&lt;br /&gt;• Produce documentation deliverables as required by project.&lt;br /&gt;• Work with project manager to help scope new project requirements.&lt;br /&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;Salary range: $60,000 to $90,000 depending on qualifications&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;Contact: paul@tempworks.com&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;Please Note:&amp;nbsp;LOCAL CANDIDATES ONLY.&amp;nbsp;The above position is intended to fulfill a full time opening at our corporate office in Eagan, MN.&amp;nbsp;&amp;nbsp;Visa Sponsorship is not available for this position.&amp;nbsp;We are not interested in receiving solicitations from outsourcing companies or freelancers.&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-1943642443704013564?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2011/05/job-position-opening-netc-developer.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-7399392397309046435</guid><pubDate>Mon, 16 May 2011 20:02:00 +0000</pubDate><atom:updated>2011-05-16T15:40:44.948-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>job</category><title>Job Position Opening: Windows and Network Systems Administrator</title><description>&lt;div class="MsoPlainText"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial; font-size: 13px; line-height: 20px;"&gt;Minnesota based software development company is seeking a Systems Administrator. This company develops and hosts applications and payroll processing/funding for staffing companies throughout the U.S. The company has one of the best work atmospheres around (arcade/pool room in the break room). Ideally looking for a Systems Administrator that's able to work on their own with minimal supervision.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Knowledge:&lt;/b&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Bachelor (4-year) degree, with a technical major, such as engineering or computer science.&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Systems Administration/System Engineer Microsoft certification helpful.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Three to five years system administration experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;b&gt;Skills Needed:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Windows Server 2008 and 2008 R2 infrastructure&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;APC Symmetry UPS and generator&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Cisco 7200&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;EMC CX4 and MirrorView&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;F5 BigIP LCM&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;FortiGate and NetScreen firewalls and VPNs&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;InterTEL PBX&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;VMware ESX&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;PRTG&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;MS Exchange 2007 and 2010&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;MS Terminal Services&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;MS Clustered SQL Servers&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Local and remote data centers&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Local desktop support; Dell hardware and Windows 7&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;b&gt;Responsibility/Oversight:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Functions as a lead worker doing the work similar to those in the work unit; responsibility for training, instruction, setting the work pace, and possibly evaluating performance.&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Maintains computing environment by identifying system requirements; installing upgrades; monitoring system performance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Introducing and integrating new technologies into existing data center environments; analyzing workflow, access, information, and security requirements; designing system infrastructure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Establishes system by planning and executing the selection, installation, configuration, and testing of PC and server hardware, software, LAN and WAN networks, and operating and system management systems; defining system and operational policies and procedures.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Maintains system performance by performing system monitoring and analysis, and performance tuning; troubleshooting system hardware, software, networks and operating and system management systems; designing and running system load/stress testing; escalating application problems to vendor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Secures system by developing system access, monitoring, control, and evaluation; establishing and testing disaster recovery policies and procedures; completing back-ups; maintaining documentation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Answering technical queries; providing references and support.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Upgrades system by conferring with vendors and services; developing, testing, evaluating, and installing enhancements and new software.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Updates job knowledge by participating in educational opportunities; reading professional publications; maintaining personal networks; participating in professional organizations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;No budget responsibility.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;b&gt;Communications/Interpersonal Contacts:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Interpret and/or discuss information with others, which involves terminology or concepts not familiar to many people; regularly provide advice and recommend actions involving rather complex issues. May resolve problems within established practices.&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Provides occasional guidance, some of which is technical.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;b&gt;Working Conditions/Physical Effort:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;Responsibilities sometimes require working evenings and weekends, sometimes with little advanced notice.&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;•&amp;nbsp;No regular travel required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;Salary range: $60,000 to $90,000 depending on qualifications&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;o:p&gt;Contact: paul@tempworks.com&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoPlainText"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: arial; font-size: 13px; line-height: 20px;"&gt;Please Note:&amp;nbsp;LOCAL CANDIDATES ONLY.&amp;nbsp;The above position is intended to fulfill a full time opening at our corporate office in Eagan, MN.&amp;nbsp;&amp;nbsp;Visa Sponsorship is not available for this position.&amp;nbsp;We are not interested in receiving solicitations from outsourcing companies or freelancers.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-7399392397309046435?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2011/05/job-position-opening-windows-and.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-1908923194298429088</guid><pubDate>Wed, 28 Apr 2010 16:22:00 +0000</pubDate><atom:updated>2010-04-28T11:22:39.152-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>WebCenter</category><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 14.2.3 release notes</title><description>&lt;p&gt;Additions from 14.2.2 to 14.2.3&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;JobBoard&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New configuration for limiting the job cart to just one job from the job board.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New configuration for letting customer contacts have access to a candidate's WebCenter application. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 14.2.2 to 14.2.3&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed a bug with the required documents page, schema was not up-to-date with the latest data layer changes. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-1908923194298429088?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2010/04/webcenter-1423-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-1140039571171053525</guid><pubDate>Wed, 31 Mar 2010 13:58:00 +0000</pubDate><atom:updated>2010-03-31T08:58:44.986-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>WebCenter</category><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 14.2.2 release notes</title><description>&lt;p&gt;Additions from 14.2.1 to 14.2.2&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Passwords that are created on the application have to be at least eight characters long.&lt;/li&gt;    &lt;li&gt;Better trace logging has been added to some of the application pages.&lt;/li&gt;    &lt;li&gt;Added a warning on the personal info page that warns the user that their session is about to be lost unless they move to the next page.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Created a new SQL timecard workflow system. &lt;/li&gt;    &lt;li&gt;PONumber is now displayed on the order details page. &lt;/li&gt;    &lt;li&gt;Added a check to make sure that the users browser was an up to date version. &lt;/li&gt;    &lt;li&gt;The &amp;quot;update candidate status&amp;quot; email notification is now an enterprise alert. &lt;/li&gt;    &lt;li&gt;Added another expand link button to the timecard dashboard for viewing historical timecards.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 14.2.1 to 14.2.2&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed a bug with finding which questions on the questionnaire page can reject a applicant. &lt;/li&gt;    &lt;li&gt;Fixed a bug when getting a SSN from the database that was missing the leading 0's.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed a bug where the adjustment tab would show up on the timecard time entry page when it was not part of the timecard template.&lt;/li&gt;    &lt;li&gt;Fixed a bug with the scanned timecards on the invoice details page not showing individual pages. &lt;/li&gt;    &lt;li&gt;Fixed a bug with the filter drop downs on the customer order search page. &lt;/li&gt;    &lt;li&gt;Minor fixes to the notification template editor. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-1140039571171053525?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2010/03/webcenter-1422-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-1621135167892881283</guid><pubDate>Mon, 01 Mar 2010 18:24:00 +0000</pubDate><atom:updated>2010-03-01T12:25:32.641-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Development</category><category domain='http://www.blogger.com/atom/ns#'>Time Clock</category><title>TempWorks Time Clock Solution</title><description>&lt;p&gt;About two and a half years ago we began an endeavor to solve the problems our customers were having with their time clock systems. Most time clocks in the market space are closed systems. Although most of them do support importing and exporting of data you still need to customize the data. TempWorks for over a decade has supported Kronos’ imports and exports plus various others but that only gets you half way. With so many Kronos systems out there in the wild and different versions I don’t think we have yet been able to use the same import/export data mapping system twice. I won’t mention all the other variations of other time clock systems in the market space. Then once you get the mapping set up you still need to supply man hours for management of the time clock the importing and exporting of data on a daily or weekly basis. We saw that as a problem.&lt;/p&gt;  &lt;p&gt;The TempWorks Time Clock solution is the innovative product that was born out of that problem solving endeavor. Instead of having a closed system “talk” to our system we wrote our own time clock software that talks directly and natively to TempWorks. Instead of having a very narrow choice of time clock hardware features, our system can work on any Microsoft Windows hardware platforms. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Integrated System&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Since it is our time clock our customers can stay within the TempWorks software they are familiar with. There isn’t a need to learn separate software packages to manage the various points of the system. When an employee clocks-in, their data is sent directly to the TempWorks system to verify they are on assignment. If multiples are found our time clock reports back to the employee that they need to chose which assignment they are clocking-in for. This step can be skipped if our time clock has been preprogrammed with a specific worksite the assignment belongs to. Also cost center routing can be set up so the user has to input which job they are clocking-in for incase the assignment has multiple jobs. This data is stored within TempWorks instantaneously and readily available to all users of the TempWorks software. If set up, the employee could log into TempWorks Web Center and make a punch correction, the employee’s supervisor could log into WebCenter and make the fix, or just have the payroll department correct&amp;#160; it within TempWorks Enterprise right away or later. The solution is completely flexible and configurable to how you want it set up. All data transfer is real-time so if you need reports based on who is and is not clocked-in you don’t need to wait, pull the report up as you need it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Hardware&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A TempWorks Time Clock customer can choose from a variety of off the shelf hardware solutions. Our only requirement is that it runs Microsoft Windows and has a network interface. This includes any machine from desktops, laptops, tablets, to mini all-in-one solutions. Input interfaces can be keyboard with mouse, no keyboard, no mouse, touch screens, bar code scanners, magnetic strip scanners, and biometric scanners. One of the more popular hardware solutions has been the &lt;a href="http://www.samsung.com/he/products/notebookcomputer/q_series/index.asp" target="_blank"&gt;Samsung Q-series&lt;/a&gt; touch screen system. It is an all-in-one system that mounts easily and has been very durable.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="537"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://lh4.ggpht.com/_gE0jHLOKNzU/S4wGY67cs0I/AAAAAAAAAH4/LTUrcNflY1Q/s1600-h/MainScreen%5B8%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MainScreen" border="0" alt="MainScreen" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4wGZCjPHDI/AAAAAAAAAH8/pOOQAvlTt-Q/MainScreen_thumb%5B4%5D.jpg?imgmax=800" width="354" height="255" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="bottom" width="285"&gt;Initial screen a user sees when stepping up to the time clock.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="536"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4wGZt38DqI/AAAAAAAAAIA/W3tGC7NB4bs/s1600-h/ClockIn%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ClockIn" border="0" alt="ClockIn" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4wGZ__EKoI/AAAAAAAAAII/fpG4GvKEEm8/ClockIn_thumb%5B2%5D.jpg?imgmax=800" width="354" height="253" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="bottom" width="284"&gt;After authentication the user is given options. These can be customized per deployment.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="535"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://lh4.ggpht.com/_gE0jHLOKNzU/S4wGaNcbVaI/AAAAAAAAAIM/A8rH5q5lYqU/s1600-h/timeclock%20%202%5B7%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="timeclock  2" border="0" alt="timeclock  2" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4wGaf53R8I/AAAAAAAAAIU/ZjizNwz4k8w/timeclock%20%202_thumb%5B3%5D.jpg?imgmax=800" width="354" height="470" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="bottom" width="283"&gt;An example installation of a Samsung Q touch screen at a work site. Note how cool we look above the ancient looking Kronos system.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-1621135167892881283?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2010/03/tempworks-time-clock-solution.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_gE0jHLOKNzU/S4wGZCjPHDI/AAAAAAAAAH8/pOOQAvlTt-Q/s72-c/MainScreen_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-5855503048545438273</guid><pubDate>Mon, 01 Mar 2010 17:11:00 +0000</pubDate><atom:updated>2010-03-01T11:11:55.320-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>Enterprise Version 14r2 release notes</title><description>&lt;h3&gt;Updated Task Management&lt;/h3&gt;  &lt;p&gt;Clicking on the &lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1LEiS2NI/AAAAAAAAAEg/2Fb5OgR05Xc/s1600-h/image001%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image001" border="0" alt="image001" src="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1LZbOAMI/AAAAAAAAAEk/gGJzfh8-5_c/image001_thumb%5B1%5D.jpg?imgmax=800" width="24" height="28" /&gt;&lt;/a&gt; button in the &lt;b&gt;Tasks&lt;/b&gt; area will open the view below:&lt;/p&gt;  &lt;p&gt;The new &lt;b&gt;Task&lt;/b&gt; functionality includes messages, reminders, and distribution lists.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1L06H42I/AAAAAAAAAEo/YgZ5Ew3tjSI/s1600-h/image002%5B8%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image002" border="0" alt="image002" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1MM-1f6I/AAAAAAAAAEs/QTZiQA3oDH4/image002_thumb%5B4%5D.jpg?imgmax=800" width="404" height="370" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If a &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt; is set, a window like the one pictured to the right will appear at the selected date and time.&lt;/p&gt;  &lt;p&gt;Highlight the &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt; and then select the &lt;i&gt;Open&lt;/i&gt; &lt;i&gt;Item&lt;/i&gt; button to view the &lt;b&gt;Task&lt;/b&gt; that the reminder was created from.&amp;#160; Clicking on the &lt;i&gt;Dismiss&lt;/i&gt; button will eliminate the &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt; and the box will close.&amp;#160; If there is more than one &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt;, clicking on &lt;i&gt;Dismiss All&lt;/i&gt; will eliminate all of the &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt; items.&lt;/p&gt;  &lt;p&gt;If you are unable to complete the &lt;b&gt;Task&lt;/b&gt; at this time choose the time from the drop down menu and then click &lt;i&gt;Snooze&lt;/i&gt; to have the &lt;b&gt;&lt;i&gt;Reminder&lt;/i&gt;&lt;/b&gt; come up again at a later time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1MeeEQ2I/AAAAAAAAAEw/4Ke4KdazPRk/s1600-h/image003%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image003" border="0" alt="image003" src="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1MgjFGVI/AAAAAAAAAE0/OIA8b-pw4Mc/image003_thumb%5B1%5D.jpg?imgmax=800" width="332" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A &lt;b&gt;&lt;i&gt;Message&lt;/i&gt;&lt;/b&gt; can be added to the &lt;b&gt;Task&lt;/b&gt; so that anyone who is working on it can keep track of their progress and that of others.&lt;/p&gt;  &lt;p&gt;Enter information into the open &lt;b&gt;&lt;i&gt;Message&lt;/i&gt;&lt;/b&gt; field and then click on the &lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1Mw6aZOI/AAAAAAAAAE4/6kNdIK-eyM8/s1600-h/image004%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image004" border="0" alt="image004" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4v1NDDYX4I/AAAAAAAAAE8/CnGDsQbOjV0/image004_thumb.jpg?imgmax=800" width="22" height="27" /&gt;&lt;/a&gt; button to add it to the &lt;b&gt;Task&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1NSK2GMI/AAAAAAAAAFA/HkLN1UXe2to/s1600-h/image005%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image005" border="0" alt="image005" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4v1Nq0mxbI/AAAAAAAAAFE/v65pFagvdjE/image005_thumb%5B1%5D.jpg?imgmax=800" width="382" height="110" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the Task Distribution section the user can select &lt;b&gt;&lt;i&gt;Branches&lt;/i&gt;&lt;/b&gt; or &lt;b&gt;&lt;i&gt;Roles&lt;/i&gt;&lt;/b&gt; that should receive the &lt;b&gt;Task &lt;/b&gt;item.&amp;#160; Click on the &lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1NnpVm_I/AAAAAAAAAFI/3f7Zak85oN0/s1600-h/image001%5B11%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image001" border="0" alt="image001" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1OB_l66I/AAAAAAAAAFM/FrebXb2tE18/image001_thumb%5B3%5D.jpg?imgmax=800" width="24" height="28" /&gt;&lt;/a&gt; button to open the form to the left.&lt;/p&gt;  &lt;p&gt;Select the &lt;b&gt;&lt;i&gt;Branches&lt;/i&gt;&lt;/b&gt; and/or &lt;b&gt;&lt;i&gt;Roles&lt;/i&gt;&lt;/b&gt; that should be included in the distribution and then click on the &lt;i&gt;Save&lt;/i&gt; button in the lower right.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1OMpHXyI/AAAAAAAAAFQ/o_fCZxVueCw/s1600-h/image006%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image006" border="0" alt="image006" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1OlDwSOI/AAAAAAAAAFU/84XgoqaqxDI/image006_thumb%5B1%5D.jpg?imgmax=800" width="274" height="274" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1OoygrqI/AAAAAAAAAFY/3TgQ7jp5jmE/s1600-h/image007%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image007" border="0" alt="image007" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1OwSyW4I/AAAAAAAAAFc/HcD3AoVzC9w/image007_thumb%5B1%5D.jpg?imgmax=800" width="604" height="302" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Task Manager has new filter options including: &lt;i&gt;Category&lt;/i&gt;, &lt;i&gt;Priority&lt;/i&gt;, &lt;i&gt;Task Type&lt;/i&gt;, &lt;i&gt;Branch&lt;/i&gt;, &lt;i&gt;Completed Between&lt;/i&gt;, &lt;i&gt;Security&lt;/i&gt; &lt;i&gt;Role&lt;/i&gt;, and &lt;i&gt;Show Unassigned&lt;/i&gt;.&amp;#160; Select information from the drop down menus or calendars to limit the &lt;b&gt;Tasks&lt;/b&gt; that are displayed then click on the &lt;i&gt;Find Tasks&lt;/i&gt; button to update your screen.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Consolidated Alert Notification&lt;/h3&gt;  &lt;p&gt;When a new &lt;b&gt;Notification&lt;/b&gt; is added, instead of listing every &lt;i&gt;Alert&lt;/i&gt; as its own individual pop up box they are now all consolidated into one box as shown below:&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;&lt;i&gt;Alerts&lt;/i&gt;&lt;/b&gt; will flash through and display all in the same box.&amp;#160; Click on the &lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1PKz3d8I/AAAAAAAAAFg/LiBwFajYXCA/s1600-h/image008%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image008" border="0" alt="image008" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1PaU1GnI/AAAAAAAAAFk/zbR--E0qaqw/image008_thumb.jpg?imgmax=800" width="24" height="23" /&gt;&lt;/a&gt; button in the upper right to close this box.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1Pkgfp5I/AAAAAAAAAFo/OrmnPROVziI/s1600-h/image009%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image009" border="0" alt="image009" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1P4ab-jI/AAAAAAAAAFs/9CrxRIN0dEA/image009_thumb.jpg?imgmax=800" width="244" height="118" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Employee Past Jobs Form&lt;/h3&gt;  &lt;p&gt;The &lt;b&gt;&lt;i&gt;Past Jobs&lt;/i&gt;&lt;/b&gt; form now includes calendars for &lt;i&gt;From Date&lt;/i&gt; and &lt;i&gt;To Date&lt;/i&gt; as well as a different view of the tabs at the top as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1QGaNo-I/AAAAAAAAAFw/shIeLcALCLg/s1600-h/image010%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image010" border="0" alt="image010" src="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1QQr64CI/AAAAAAAAAF0/bggTgCcVHU4/image010_thumb%5B1%5D.jpg?imgmax=800" width="604" height="319" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Employee Education Form&lt;/h3&gt;  &lt;p&gt;The &lt;b&gt;&lt;i&gt;Education&lt;/i&gt;&lt;/b&gt; form now includes calendars for &lt;i&gt;Date Started&lt;/i&gt;, &lt;i&gt;Date Ended&lt;/i&gt;, and &lt;i&gt;Degree Date&lt;/i&gt; as pictured.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1QslwuvI/AAAAAAAAAF4/eJIjL4FGdSA/s1600-h/image011%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image011" border="0" alt="image011" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1Q7JzH9I/AAAAAAAAAF8/ICLVtbDuarU/image011_thumb.jpg?imgmax=800" width="244" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Adding Interest Codes&lt;/h3&gt;  &lt;p&gt;Adding &lt;b&gt;&lt;i&gt;Interest Codes&lt;/i&gt;&lt;/b&gt; has changed to the &lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1RP-DN1I/AAAAAAAAAGA/VO4j-k61mAQ/s1600-h/image012%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image012" border="0" alt="image012" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1RScxm0I/AAAAAAAAAGE/gpJ4ZibDZbo/image012_thumb.jpg?imgmax=800" width="26" height="26" /&gt;&lt;/a&gt;&amp;#160; button throughout the system.&amp;#160; Clicking on this button opens the form below where &lt;b&gt;&lt;i&gt;Interest Codes&lt;/i&gt;&lt;/b&gt; can be selected.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1RRaERPI/AAAAAAAAAGI/65diTAfHexo/s1600-h/image013%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image013" border="0" alt="image013" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4v1R0XJpuI/AAAAAAAAAGM/Tdbe8y97e1w/image013_thumb%5B1%5D.jpg?imgmax=800" width="404" height="394" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;New Order Email Functionality&lt;/h3&gt;  &lt;p&gt;From the &lt;b&gt;Order Visifile&lt;/b&gt; two new &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt; functions have been added.&amp;#160; The first &lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1R7hUTxI/AAAAAAAAAGQ/1CKhhjZiirg/s1600-h/image014%5B8%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image014" border="0" alt="image014" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1SLxJN2I/AAAAAAAAAGU/Cz1f3vRL48A/image014_thumb%5B2%5D.jpg?imgmax=800" width="25" height="25" /&gt;&lt;/a&gt; button allows the user to send an &lt;i&gt;Assignment Confirmation&lt;/i&gt; &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt;, the second opens the function to send the &lt;b&gt;Employee&lt;/b&gt; a &lt;i&gt;New Hire Package&lt;/i&gt; via &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1ScGEi1I/AAAAAAAAAGY/bo-jg1jHEP4/s1600-h/image015%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image015" border="0" alt="image015" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1S-l7LKI/AAAAAAAAAGc/Nk9QGxfk3ms/image015_thumb%5B1%5D.jpg?imgmax=800" width="604" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once the first &lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1S0-cNnI/AAAAAAAAAGg/ZEoN0YhvTzM/s1600-h/image014%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image014" border="0" alt="image014" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1TApZj1I/AAAAAAAAAGk/80blh31pHbY/image014_thumb.jpg?imgmax=800" width="25" height="25" /&gt;&lt;/a&gt; button has been selected, choose the &lt;i&gt;Email Template&lt;/i&gt; from the drop down menu.&amp;#160; Click in the box to select this template to &lt;i&gt;Use for Customer Default&lt;/i&gt;.&amp;#160; Then click &lt;i&gt;Next&lt;/i&gt; to continue.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1TY-2ctI/AAAAAAAAAGo/GYIwzuzlxV0/s1600-h/image017%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image017" border="0" alt="image017" src="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1Tl1ptbI/AAAAAAAAAGs/lqVXz98z9OE/image017_thumb%5B2%5D.jpg?imgmax=800" width="454" height="344" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Select the &lt;b&gt;&lt;i&gt;Email &lt;/i&gt;&lt;/b&gt;recipients from the list by clicking on their name. &lt;/p&gt;  &lt;p&gt;Then click the &lt;i&gt;Finish &lt;/i&gt;button to close this wizard and open the outgoing &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1T6du6YI/AAAAAAAAAGw/Vm8GSQcYlTI/s1600-h/image018%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image018" border="0" alt="image018" src="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1UH1JY4I/AAAAAAAAAG0/L5eA6x5SmtI/image018_thumb%5B1%5D.jpg?imgmax=800" width="454" height="343" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;*Note – The &lt;i&gt;Assignment Confirmation&lt;/i&gt; is sent to the &lt;b&gt;Customer Contact(s)&lt;/b&gt; and the &lt;i&gt;New Hire Package&lt;/i&gt; is sent to the &lt;b&gt;Employee(s)&lt;/b&gt;.&amp;#160; The templates for these &lt;b&gt;&lt;i&gt;Emails&lt;/i&gt;&lt;/b&gt; can be set up in the &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt; &lt;b&gt;&lt;i&gt;Template Manager &lt;/i&gt;&lt;/b&gt;form. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once the second &lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1UN0xsII/AAAAAAAAAG4/1U1Jm5fFqBI/s1600-h/image014%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image014" border="0" alt="image014" src="http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1Uq7Nz3I/AAAAAAAAAG8/QoSEMYKn3cU/image014_thumb%5B1%5D.jpg?imgmax=800" width="25" height="25" /&gt;&lt;/a&gt; button has been selected, choose the &lt;i&gt;Email Template&lt;/i&gt; from the drop down menu.&amp;#160; Click in the box to select this template to &lt;i&gt;Use for Customer Default&lt;/i&gt;.&amp;#160; Then click the &lt;i&gt;Finish&lt;/i&gt; button to close this wizard and open the outgoing &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1UuSr2hI/AAAAAAAAAHA/4ias9-cBF20/s1600-h/image020%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image020" border="0" alt="image020" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4v1VGHcEgI/AAAAAAAAAHE/fL1CNTHAITs/image020_thumb%5B1%5D.jpg?imgmax=800" width="404" height="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;*Note – Both of these &lt;b&gt;&lt;i&gt;Email&lt;/i&gt;&lt;/b&gt; functions can be completed from the &lt;b&gt;Assignment&lt;/b&gt; &lt;i&gt;Actions&lt;/i&gt; drop down menu as well.&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Updated Calendar&lt;/h3&gt;  &lt;p&gt;The &lt;b&gt;Calendar&lt;/b&gt; has an updated look that includes views for &lt;i&gt;Day&lt;/i&gt;, &lt;i&gt;Week&lt;/i&gt;, &lt;i&gt;Month&lt;/i&gt;, and &lt;i&gt;Timeline&lt;/i&gt;.&amp;#160; (The screen shot below displays the &lt;i&gt;Month&lt;/i&gt; view).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1VZeZLKI/AAAAAAAAAHI/3BkwWCqeGbU/s1600-h/image021%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image021" border="0" alt="image021" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1VtPMHsI/AAAAAAAAAHM/j4Djh4e3BYM/image021_thumb%5B1%5D.jpg?imgmax=800" width="526" height="454" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Double-clicking on the &lt;b&gt;Calendar&lt;/b&gt; will bring up a form like the one to the left.&lt;/p&gt;  &lt;p&gt;Enter the &lt;i&gt;Subject&lt;/i&gt;, &lt;i&gt;Location&lt;/i&gt;, set up a recurrence or select a &lt;i&gt;Category&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;This can then be exported by clicking on the &lt;i&gt;Export to Outlook&lt;/i&gt; button or saved by clicking on &lt;i&gt;Save &amp;amp; Close&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1V-2D_zI/AAAAAAAAAHQ/swqWCF8WFV0/s1600-h/image022%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image022" border="0" alt="image022" src="http://lh4.ggpht.com/_gE0jHLOKNzU/S4v1WBjkqmI/AAAAAAAAAHU/EMzZwSxc7kI/image022_thumb%5B1%5D.jpg?imgmax=800" width="504" height="383" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Call-Em-All Integration&lt;/h3&gt;  &lt;p&gt;TempWorks has integrated with Call-Em-All automated calling service to allow your users to save time by sending the selected &lt;b&gt;Employees&lt;/b&gt; from an Enterprise &lt;b&gt;Search&lt;/b&gt; a recorded message via phone call or voicemail.&amp;#160; This automated calling service functionality requires that your company sets up an account with Call-Em-All.&amp;#160; Please contact TempWorks for more information and/or a demo on this functionality.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/S4v1WQoUw2I/AAAAAAAAAHY/OgDgkyxmS-g/s1600-h/clip_image002%5B5%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh6.ggpht.com/_gE0jHLOKNzU/S4v1WrFEbDI/AAAAAAAAAHc/Qw_g80pK2lQ/clip_image002_thumb%5B2%5D.gif?imgmax=800" width="504" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-5855503048545438273?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2010/03/enterprise-version-14r2-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_gE0jHLOKNzU/S4v1LZbOAMI/AAAAAAAAAEk/gGJzfh8-5_c/s72-c/image001_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-5168324050838237861</guid><pubDate>Mon, 04 Jan 2010 21:13:00 +0000</pubDate><atom:updated>2010-01-04T15:13:38.404-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 14.2.1 release notes</title><description>&lt;p&gt;Additions from 14.2.0 to 14.2.1&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Navigation buttons can now be added to the top of the application.&lt;/li&gt;    &lt;li&gt;Contact Messages are now created for some of the questions on the personal info page that are not displayed in Enterprise. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Updated Telerik controls to the latest version.&lt;/li&gt;    &lt;li&gt;The &amp;quot;My Settings&amp;quot; and &amp;quot;Logout&amp;quot; buttons have been moved to the top of the pages. &lt;/li&gt;    &lt;li&gt;The timecard approval page will now save which rows the user has expanded. &lt;/li&gt;    &lt;li&gt;Email notifications that had been going out to servicereps are now alerts in Enterprise. &lt;/li&gt;    &lt;li&gt;There is a new reapply washed status and role in webcenter for companies that need their employees to reapply to the application. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 14.2.0 to 14.2.1&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed validation and default dates for date text boxes on the application. &lt;/li&gt;    &lt;li&gt;Shift availability is now saved to the database. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fix a bug with generating pdf files for W2's.&lt;/li&gt; &lt;/ul&gt; Fix a bug when viewing timecards by a particular contact id. It will now only pull timecards for the week that was selected on the calendar.   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-5168324050838237861?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2010/01/webcenter-1421-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-7191478280437679754</guid><pubDate>Mon, 23 Nov 2009 15:01:00 +0000</pubDate><atom:updated>2009-11-23T09:01:18.410-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 14.2.0 release notes</title><description>&lt;p&gt;Additions from 12.8.1 to 14.2.0 (Version number now inline with database version)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add new user config to enable and disable the order candidate reviews.&lt;/li&gt;    &lt;li&gt;Change order candidate reviews to not show candidates with a ‘WCandidate’ status.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 12.8.1 to 14.2.0&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Updated the education, work experience and skills pages to work with the new 14r table schemas. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Updated some of the vendor procedures to work with the new 14r table schemas&lt;/li&gt;    &lt;li&gt;Fixed some of the error messages to have the appropriate color.&lt;/li&gt;    &lt;li&gt;Updated the label of the delete timecard button on the time entry page. &lt;/li&gt;    &lt;li&gt;Updated our W2optin page to work with new tables.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-7191478280437679754?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/11/webcenter-1420-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-2541018037100504454</guid><pubDate>Thu, 12 Nov 2009 21:02:00 +0000</pubDate><atom:updated>2009-11-12T15:02:40.444-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 12.8.1 release notes</title><description>&lt;p&gt;Additions from 12.8.0 to 12.8.1&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Added a new Order Request Workflow system for customers that need to have order requests approved by other contacts before the order can be filled. &lt;/li&gt;    &lt;li&gt;New user configs have been added to work with the new order request workflows.&lt;/li&gt;    &lt;li&gt;New notifications have been added to work with the new order request workflows. &lt;/li&gt;    &lt;li&gt;Order request reviewer statuses and order request event history have been added to the Order Details page.&lt;/li&gt;    &lt;li&gt;Added links to the task page on the customer Order Search and Timecard Dashboard pages to notify contacts if they have any pending reviews. &lt;/li&gt;    &lt;li&gt;Added functionality to the Candidate Details page that will bring you right to the download manager if the employee only has one resume.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 12.8.0 to 12.8.1&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed the work locations list box so it will not duplicate items in the list.&lt;/li&gt;    &lt;li&gt;Fixed which notification gets sent out when an applicant is rejected.&lt;/li&gt;    &lt;li&gt;Fixed a bug when gathering the last four digits of and SSN.&lt;/li&gt;    &lt;li&gt;Fixed a bug when gathering the question id's of wrong answers on the questionnaire. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed a JavaScript bug on the Payroll History page.&lt;/li&gt;    &lt;li&gt;Fixed a bug in the timecard template config page that was causing the cost code to always show in the preview window once you have viewed a timecard template that had shown the cost code.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-2541018037100504454?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/11/webcenter-1281-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-6683993409866600857</guid><pubDate>Fri, 06 Nov 2009 15:28:00 +0000</pubDate><atom:updated>2009-11-06T09:30:03.353-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Development</category><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Bridging Java to .NET or how to lose several days of your life</title><description>&lt;p&gt;I’ve been spending time for the past three weeks on and off trying to figure out how to use old Java code in one of our .NET projects. A goal for a couple of upcoming clients is to better facilitate the generation of tax and various government forms. With the many thousands of forms we need to support we didn’t want to design and maintain these forms in-house. For a solution we turned to our primary dead tree form provider Nelco. &lt;/p&gt;  &lt;p&gt;Nelco provides a PDF form package but unfortunately the PDFs are not AcroForm compatible. You have to use their XML/PDF form merging software solution. More unfortunately their solution is a 10 year old Java package SDK with no source code. I have nothing against Java but here at TempWorks we settled on .NET many years ago and I am not a fan of mixing development platforms. For the past 9 years .NET has provided everything I need to get my job done. So here is my problem, how to get this Java package to work with our .NET code without any weird hacks and make it easy for future TempWorks .NET developers to maintain. &lt;/p&gt;  &lt;p&gt;I spent a few days trying various packages without much luck. A few worked fine but they were expensive from a royalty perspective or were more cumbersome then just using Java and writing a web service for communication. Finally I came across an open source solution called &lt;a href="http://www.ikvm.net/" target="_blank"&gt;IKVM.NET&lt;/a&gt;. The cool thing with this solution is you can use IKVM to convert compiled Java code (classes or jar files) and convert it to .NET compiled assemblies. After a few days trying to find the magic IKVM’s command line recipe and fighting with Java class paths, success!&lt;/p&gt;  &lt;p&gt;&lt;em&gt; Example Java code from Nelco’s SDK&lt;/em&gt;&lt;/p&gt;  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// This code does the merging of an xml file and a pdf file.  The fields &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// are loaded from the Xml document by the FormBean &amp;quot;utility&amp;quot; into the &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// FormFields object named &amp;quot;inputFields&amp;quot;.  The fields are merged into an &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// existing pdf file specified by the variable &amp;quot;pdfFile&amp;quot; by the PDFMerge &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// object named &amp;quot;pd&amp;quot;.  The resulting pdf object with the merged xml fields &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// is the Pdf object named &amp;quot;pdf&amp;quot;.  An new FileOutputStream is created &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// using the output pdf name and then the function writeToStream is called &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;// to write the merged pdf document to disk.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Pdf PdfFileMergeXmlFile(String xmlInputFile, String pdfFile) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// The following code just tweaks the necessary file names.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  xmlInputFile = xmlInputFile + &amp;quot;&lt;span style="color: #8b0000"&gt;.xml&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  String pdfOutputFile = pdfFile + &amp;quot;&lt;span style="color: #8b0000"&gt;_1_OUT.pdf&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  pdfFile = pdfFile + &amp;quot;&lt;span style="color: #8b0000"&gt;.pdf&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// Now create the necessary Pdf and FormFields objects.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  Pdf pdf = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  FormFields inputFields = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// The following string and object are used to read the XML and&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// create a FormField object.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  String xmlbuf = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  FormBean utility = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FormBean();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// for purposes of this example, default data is read from a file (xmlInputFile)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #008000"&gt;// and merged with the PDF represented by pdfFile.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// The following block of code reads the input data/fields from the XML&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// data file stored on disk.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    xmlbuf = utility.getXML(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; File(xmlInputFile));&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    utility.setInputFieldsXML(xmlbuf);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    inputFields = utility.getFormFieldsInput();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    System.out.println(&amp;quot;&lt;span style="color: #8b0000"&gt;- Loaded input data from: &lt;/span&gt;&amp;quot; + xmlInputFile);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// We use the PDFMerge object to merge a FormFields object and a Pdf object.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    PDFMerge pd = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PDFMerge();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// So, here we are making the call to do the merge.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    pdf = pd.merge(pdfFile, inputFields);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    System.out.println(&amp;quot;&lt;span style="color: #8b0000"&gt;- Data successfully merged with &lt;/span&gt;&amp;quot; + pdfFile);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// Here we are writing the PDF file out to disk.  First, we get a new&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// FileOutputStream with the desired file name.  Next, we call the Pdf's&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #008000"&gt;// writeToStream method to write out the Pdf.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    FileOutputStream fos = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileOutputStream(pdfOutputFile);    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    pdf.writeToStream(fos);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    System.out.println(&amp;quot;&lt;span style="color: #8b0000"&gt;- Wrote new PDF file &lt;/span&gt;&amp;quot; + pdfOutputFile + &amp;quot;&lt;span style="color: #8b0000"&gt; successfully&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  } &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    ex.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; pdf;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The resulting .NET assembly generated by IKVM in Reflector.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_gE0jHLOKNzU/SvRApHer5yI/AAAAAAAAAEM/S8KX7Hub3R0/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_gE0jHLOKNzU/SvRApr6Vd2I/AAAAAAAAAEQ/0HORjqKxMzA/image_thumb%5B2%5D.png?imgmax=800" width="218" height="502" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;My C# console application using the above Java example code.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; com.etymon.pj;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; com.nelco.form;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; xmlInputFile = @&amp;quot;&lt;span style="color: #8b0000"&gt;E:\Temp\Nelco\pdfdemo\79411.xml&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; pdfFile = @&amp;quot;&lt;span style="color: #8b0000"&gt;E:\Temp\Nelco\pdfdemo\79411.pdf&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; pdfOutputFile = @&amp;quot;&lt;span style="color: #8b0000"&gt;e:\temp\79411_OUT.pdf&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            var pdf = PdfFileMergeXmlFile(xmlInputFile, pdfFile, pdfOutputFile);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            Console.ReadLine();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; Pdf PdfFileMergeXmlFile(String xmlInputFile, String pdfFile, String pdfOutputFile)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            Pdf pdf = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            FormFields inputFields = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; xmlbuf = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            FormBean utility = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FormBean();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            xmlbuf = utility.getXML(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; java.io.File(xmlInputFile));&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            utility.setInputFieldsXML(xmlbuf);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            inputFields = utility.getFormFieldsInput();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;- Loaded input data from: &lt;/span&gt;&amp;quot; + xmlInputFile);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            PDFMerge pd = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PDFMerge();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            java.io.FileOutputStream fos = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; java.io.FileOutputStream(pdfOutputFile);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            pd.merge(pdfFile, inputFields, fos);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;- Wrote new PDF file = &lt;/span&gt;&amp;quot; + pdfOutputFile + &amp;quot;&lt;span style="color: #8b0000"&gt; successfully&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; pdf;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;WOOT!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/SvRAp_5RtVI/AAAAAAAAAEU/3yMvWzCd9ZE/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_gE0jHLOKNzU/SvRAqHtMrpI/AAAAAAAAAEY/YWk5GcfsOoE/image_thumb%5B5%5D.png?imgmax=800" width="588" height="170" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Kudos to the &lt;a href="http://sourceforge.net/users/jfrijters" target="_blank"&gt;main guy&lt;/a&gt; behind IKVM.NET, you saved me a bunch of work.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-6683993409866600857?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/11/bridging-java-to-net-or-how-to-lose.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_gE0jHLOKNzU/SvRApr6Vd2I/AAAAAAAAAEQ/0HORjqKxMzA/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-4131770632057053511</guid><pubDate>Fri, 02 Oct 2009 22:09:00 +0000</pubDate><atom:updated>2009-10-02T18:10:05.888-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Development</category><category domain='http://www.blogger.com/atom/ns#'>Mobile</category><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Prototyping the next generation mobile web application</title><description>&lt;p&gt;For many years TempWorks has been selling our &lt;a href="http://www.tempworks.com/products/software/mobile-staffing-solutions.aspx" target="_blank"&gt;TempWorks Mobile&lt;/a&gt; product. It has been very successful with people on the go who want quick access to their TempWorks data. The product has gone thru many versions but never has kept up with the capabilities of today’s mobile phone. With the arrival of the iPhone, HTC handsets, Android, and Palm Pre phones you can do so much more than ever before. &lt;/p&gt;  &lt;p&gt;I’ve been wanting for almost a year to revamp TempWorks Mobile and update it for the newer phones. Unfortunately large blocks spare time for development is a luxury I don’t have very often. Although about a month ago I decided to move some of my projects around to start prototyping the next generation of Mobile. A couple of reasons I did this, first I wanted to get it done because honestly I am tired of looking at an user interface that is ancient compared to mobile web-app standards today and I wanted to get my hands dirty with technology I haven't used before.&lt;/p&gt;  &lt;p&gt;During the lifetime of Mobile I noticed a lot of people liked to use it on their desktop for quick access. I think that is a great idea because sometimes you need a quick number or bit of info. The only downside to old Mobile is that it didn't adapt to its environment. You saw the exact same web pages on your desktop as you did on your mobile phone. What a waste of real estate. Then on flip side you add more features to use the real estate but then it is overwhelming on the mobile phone. With this dilemma as one of primary development points I went to work. I chose to use ASP.NET MVC because its basic architecture solves one of my primary development points and I haven't used it before. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.asp.net/mvc/" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; is based on the MVC (Model-View-Controller) paradigm that was popularized by Ruby on Rails. I took advantage of ASP.NET MVC’s ability to have more than one view for an URL or route. I modified the routing engine to inspect the incoming request and determine if it is a mobile device and what kind of device or a desktop browser and route the request to the appropriate view. Here is where the development time savings comes into play. Even though I have many views, they basically use the same back-end logic to feed data to the views. So for an example when you search for a contact I have written the contact search logic within my controller. I only have one controller for my mobile and desktop views so I only write the logic once and am able to support many different views.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/SsZ59yMlzEI/AAAAAAAAADQ/yf4vtMfDcME/s1600-h/Capture2%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Capture2" border="0" alt="Capture2" src="http://lh4.ggpht.com/_gE0jHLOKNzU/SsZ5-Pi1qOI/AAAAAAAAADU/cLKuAVXDzWc/Capture2_thumb%5B2%5D.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="600"&gt;In this picture you can see that I have one ContactController and currently eight views using it for logic, four mobile views and four desktop views.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Now on to some glamour shots… Currently in my prototype I am focusing on mobile WebKit based mobile browsers currently used the iPhone, Android, and Palm Pre phones. I plan to create more mobile views for Blackberry and Windows Mobile 6.5 browsers and a fall-back mobile view that will be for everything else. &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/SsZ5-QNW7KI/AAAAAAAAADY/v41yvh3O0kU/s1600-h/Capture4%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture4" border="0" alt="Capture4" src="http://lh3.ggpht.com/_gE0jHLOKNzU/SsZ5-TUXyBI/AAAAAAAAADc/lx9rAY8EdbE/Capture4_thumb%5B1%5D.png?imgmax=800" width="165" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://lh6.ggpht.com/_gE0jHLOKNzU/SsZ5-sU9wnI/AAAAAAAAADg/3w1sWZ5_j7Y/s1600-h/Capture5%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture5" border="0" alt="Capture5" src="http://lh3.ggpht.com/_gE0jHLOKNzU/SsZ5-z0N8VI/AAAAAAAAADk/O-pUcNzKABw/Capture5_thumb%5B1%5D.png?imgmax=800" width="165" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;a href="http://lh4.ggpht.com/_gE0jHLOKNzU/SsZ5_GPRdZI/AAAAAAAAADo/Cyftqo9-HmU/s1600-h/Capture6%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture6" border="0" alt="Capture6" src="http://lh5.ggpht.com/_gE0jHLOKNzU/SsZ5_ZYxB7I/AAAAAAAAADs/bQaKKQIxKT0/Capture6_thumb.png?imgmax=800" width="165" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133" align="center"&gt;iPhone&lt;/td&gt;        &lt;td valign="top" width="133" align="center"&gt;Android&lt;/td&gt;        &lt;td valign="top" width="133" align="center"&gt;Palm Pre&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;On the desktop I am developing for the three major browsers, IE 7 and later, Firefox, and Webkit (Safari and Chrome).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/SsZ5_ndMzuI/AAAAAAAAADw/z-vaNsPLRtg/s1600-h/Capture1%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture1" border="0" alt="Capture1" src="http://lh5.ggpht.com/_gE0jHLOKNzU/SsZ5_25vq4I/AAAAAAAAAD0/-o-ymZEbU30/Capture1_thumb%5B5%5D.png?imgmax=800" width="644" height="441" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For iPhone users you get the ability to use TempWorks Mobile as a full screen application and have the ability to launch from your home screen.&lt;/p&gt;  &lt;table border="0" cellspacing="5" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="192" align="center"&gt;&lt;a href="http://lh3.ggpht.com/_gE0jHLOKNzU/SsZ6AVD_GvI/AAAAAAAAAD4/7e1FlFKBjpY/s1600-h/Capture7%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture7" border="0" alt="Capture7" src="http://lh6.ggpht.com/_gE0jHLOKNzU/SsZ6AQ3KT1I/AAAAAAAAAD8/WLaLa2DFaz8/Capture7_thumb.png?imgmax=800" width="167" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="191" align="center"&gt;&lt;a href="http://lh5.ggpht.com/_gE0jHLOKNzU/SsZ6Aoks58I/AAAAAAAAAEA/a7gT-52eUGc/s1600-h/Capture3%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture3" border="0" alt="Capture3" src="http://lh5.ggpht.com/_gE0jHLOKNzU/SsZ6A0CzqAI/AAAAAAAAAEE/uSS4FdiRROg/Capture3_thumb.png?imgmax=800" width="165" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="192"&gt;Mobile icon on the home page&lt;/td&gt;        &lt;td valign="top" width="194"&gt;Notice no address or status bars&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Overall I have been impressed with the technical ability of ASP.NET MVC. It does have one downfall for me; the introduction of spaghetti code back into your HTML pages. You old school ASP folks and PHP developers probably don't mind that but after using WebForms for almost 10 years it takes a bit of getting used to again. Although I will admit it's nice getting back to HTTP bare metal again and not dealing with WebForm's idiosyncrasies.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-4131770632057053511?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/10/prototyping-next-generation-mobile-web.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_gE0jHLOKNzU/SsZ5-Pi1qOI/AAAAAAAAADU/cLKuAVXDzWc/s72-c/Capture2_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-7774084817077876255</guid><pubDate>Wed, 02 Sep 2009 22:15:00 +0000</pubDate><atom:updated>2009-09-02T17:15:10.830-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 12.8.0 Release Notes</title><description>&lt;p&gt;Additions from 5.2.13 to 12.8.0 (Adopted TempWorks database version numbering system)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New data access layer.&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;The preferred work locations field on the personalinfo page can now be either a text box or a list box. &lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;JobBoard&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New data access layer.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New data access layer.&lt;/li&gt;    &lt;li&gt;Added a new sitesettings configuration for setting the preferred work locations field type on the personalinfo page. &lt;/li&gt;    &lt;li&gt;Updated our customer invoice details page to work with Enterprise’s new timecard document image linking. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Bug Fixes from 5.2.13 to 12.8.0&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;JobBoard&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fixed a bug in the RSS feed with orders having an ‘&amp;amp;’ in the job description field.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Corrected grammar in the w2 opt in disclosure. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-7774084817077876255?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/09/webcenter-1280-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-737819260671262082</guid><pubDate>Wed, 22 Jul 2009 20:54:00 +0000</pubDate><atom:updated>2009-09-02T16:01:30.634-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Deployment scenarios for Enterprise</title><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="left" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/DeploymentscenariosforEnterprise_D1F2/09opart.large_3.gif" width="103" height="104" /&gt; Today we have a few choices to get business software on someone’s computer. There are web applications like Google Gmail, Rich Internet Applications (RIA) that use Flash or Silverlight and there are Windows applications like Microsoft Outlook. We determined years ago that a Web 2.0 like web application wasn’t going to cut it. We spent a few years working on a “WebClient” for TempWorks and decided that there were too many roadblocks to achieve the vision we had for a client. Those were the days of early AJAX, the browser wars became stagnant and everyone was running IE6. We also passed on RIAs later on because their browser sandbox introduced a lot of the same roadblocks we had during our WebClient development. That meant a Windows application but we liked the easy deployment of a web application. We could of fell back into easy mode and required Windows Terminal Services (TS) or Citrix for all our remote installations but that opens another can of issues. If you’re a sysadmin I don’t have to list them, you all know them well. For others not familiar here are the nightmares of any TS/Citrix administrator; printing, local drive access, and more recently USB devices. There is a rich third party market to compensate for these shortcomings but they drive up the cost of already expensive TS/Citrix licenses and that make our product more expensive to the customer.&lt;/p&gt;  &lt;p&gt;Yes, Virginia, there is another way. I had been long aware of a technology from Microsoft called remoting. It was kind of a sibling to web services, which was another possible choice to use. Remoting was lighter weight but used non-standard TCP protocols. I’d played with it and liked it but was very finicky to get it to work “right”. Web services offered standard HTTP/S protocols but was bloated. We needed something that was lightweight and fast like remoting but used standard protocols so we could cross firewalls without special configurations. Enter &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank"&gt;WCF&lt;/a&gt;. I first saw WCF at Microsoft’s PDC show in 2005 and loved it instantly. It offered exactly what I was looking for, lightweight and firewall friendly. &lt;/p&gt;  &lt;p&gt;With WCF in our toolkit we had a way for our application to communicate across the Internet. Now I needed a way to deploy our application without too much hassle for the end-user. Microsoft had that answered for us as well. &lt;a href="http://msdn.microsoft.com/en-us/library/t71a733d.aspx" target="_blank"&gt;ClickOnce&lt;/a&gt; was a technology that allows .NET developed applications to be installed by a non-administrative user just by clicking on a web link (anchor tag for you web folks). Users just visit a web page and click a regular web link and ClickOnce installs all the files it needs, creates the shortcuts for the user and launches the application. It also allows in-place upgrading so when new versions of the application come out it will automatically download and install the update.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:8366ea01-2b3f-430e-a7f8-a2350b6977f5" class="wlWriterEditableSmartContent"&gt;&lt;img border="0" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/DeploymentscenariosforEnterprise_D1F2/Capture_5.png" width="250" height="282" /&gt;&lt;/div&gt;  &lt;p&gt;So today we have a Windows application that has many more features then any web application will ever have like USB access (think scanners and other capture devices) and local program access (think MS Outlook syncing) but can be installed locally with very little effort and work effortlessly across the Internet. There is a downside to all greatness. We use a lot of cutting-edge technology and unfortunately a lot of business computers are not the latest generation hardware or the end-user has poor Internet speeds. In these special cases we fall back to using Windows Terminal Services. I foresee in a few more years the hardware cycle will catch up with our technology as will broadband speeds. When this happens the less we have to fallback to TS and for me, that is something I look forward to.&lt;/p&gt;  &lt;p&gt;If you want to try out our latest and greatest technology, visit our free download center &lt;a href="http://freemium.tempworks.com/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-Paul&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-737819260671262082?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/07/deployment-scenarios-for-enterprise.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-8799725929834850809</guid><pubDate>Tue, 19 May 2009 18:22:00 +0000</pubDate><atom:updated>2009-09-02T15:57:21.731-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 5.2.13 Release Notes</title><description>&lt;p&gt;   &lt;br /&gt;Additions from 5.2.12 to 5.2.13&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Drop Downs are now valid options for answering questions on the questionnaire and agreement pages of the application. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Administrators can now create questions that have drop downs as available answers. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;br /&gt;Bug Fixes from 5.2.12 to 5.2.13&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Added logging to the new WebCenter notification tables for better error tracking.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-8799725929834850809?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/05/webcenter-5213-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-6961067014616181965</guid><pubDate>Fri, 15 May 2009 03:20:00 +0000</pubDate><atom:updated>2009-09-02T15:57:22.590-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Why do SMS messages require three Visual Studio debugging sessions…</title><description>&lt;p&gt;I had to blog about the fact I am currently watching three active Visual Studio debugging sessions on my workstation. Also it gives me an opportunity to describe a little bit about our new product release. About a month ago one of customers asked us if we could come up with a way to use text messaging for one of their processes. Their process of tracking employee availability requires their employees to call in once a day so a rep can mark them as available. The customer had the brainstorm of allowing employees to send a text message instead of calling they could save a lot of the employee’s and rep’s time. &lt;/p&gt;  &lt;p&gt;Project scope in hand I knew the scenario would be simple to code for the customer. I wanted to take the project further. The idea of being able to support sending a message to an employee and getting their reply crossed my mind. Other folks around the office had other ideas for text message uses like reporting hours worked and assignment information. I also wanted it to be simple for our customers to implement regardless of their version of TempWorks. I came up with a three tier system. The heart of the system is our SMS gateway server we maintain here at TempWorks. The SMS gateway routes all messages both incoming and outgoing for all customers. With this set up our customers only need to deal with us and not worry about having to establishing accounts with SMS providers. Tiers two and three are installed on the customer side. Tier two is a basic web service interface to receive messages from the SMS gateway. Tier three is our SQLCLR assembly that takes care of sending messages to the SMS gateway.&lt;/p&gt;  &lt;p&gt;Debugging these projects isn’t difficult, it's almost a little fun watching messages flow thru the three debugging screens. Since the SMS gateway will be routing all SMS messages back and forth I spent considerable time trying to make all my code multithread compatible. It’s amazing how easy Visual Studio 2008 make this. From whiteboard to the customer demo today, it only took me about 32 man-hours.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Youknowyoureadeveloperwhen_6778/sms1_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sms1" border="0" alt="sms1" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Youknowyoureadeveloperwhen_6778/sms1_thumb_1.png" width="516" height="264" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-6961067014616181965?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/05/why-do-sms-messages-require-three.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-9074262310550374677</guid><pubDate>Fri, 01 May 2009 19:16:00 +0000</pubDate><atom:updated>2009-09-02T16:02:07.046-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>WebCenter 5.2.12 Release Notes</title><description>&lt;p&gt;New features from 5.2.11 to 5.2.12&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All NS inserts have been replaced with the new Notification system. &lt;/li&gt;    &lt;li&gt;The Sovren resume parser has been updated to the latest version.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;JobBoard&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All NS inserts have been replaced with the new Notification system. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All NS inserts have been replaced with the new Notification system. &lt;/li&gt;    &lt;li&gt;Added compatibility for IE8.&lt;/li&gt;    &lt;li&gt;Added a new page to the Administrative control panel to create/edit Notification templates. &lt;/li&gt;    &lt;li&gt;Added a new page to the Administrative control panel to manage the Notification subscriptions for all users. &lt;/li&gt;    &lt;li&gt;The “My Settings” page has been reworked to work with the new Notification system.&lt;/li&gt;    &lt;li&gt;All Telerik controls has been updated to the latest version.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;br /&gt;Major bug fixes from 5.2.11 to 5.2.12&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Application&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The state drop down and the address are now displayed correctly when a new employment record is created. &lt;/li&gt;    &lt;li&gt;The resume section now passes the BranchID to the procedures and not the BranchName.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;WebCenter&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fix the cost code and pay code drop downs on the timecard time entry pages to allow for text entry.&lt;/li&gt;    &lt;li&gt;Fix when the “Add Timecard” button should be displayed on the timecard time entry page.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-9074262310550374677?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/05/webcenter-5212-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-4274070348161709862</guid><pubDate>Thu, 23 Apr 2009 19:04:00 +0000</pubDate><atom:updated>2009-09-06T17:55:24.259-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Engineering four 9s</title><description>&lt;p&gt;Four 9s is a term thrown around in IT circles by people who like to gloat about all the expensive equipment they have purchased. For TempWorks it means that we guarantee that our hosting services are available for use by our customers 99.99% of the year. Four 9s boils down to about 53 minutes of unplanned downtime for a given year. A footnote to our guarantee is that it does not include planned downtime for system maintenance. &lt;/p&gt;  &lt;p&gt;Personally I am a pessimist, at least that is what my wife tells me. I like calling it being overly cautious and always expect bad things to happen. Okay, same thing. Over my years here at TempWorks I have overseen the progression of our hosting services division grow from a three computers to today where we have over 60 servers. In the beginning we didn’t have the budget to worry about uptime and redundancy. If a computer went down, the Internet or power fizzled out our customers went offline. Luckily that didn’t happen too often. Maybe a few times a year mostly because of our buildings notorious power supply conditions. We’ll just say I didn’t enjoy the coming spring/summer storm seasons.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="247"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="245"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/paul_czywczysnki_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="paul_czywczysnki" border="0" alt="paul_czywczysnki" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/paul_czywczysnki_thumb.jpg" width="244" height="164" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="245"&gt;         &lt;h6&gt;Taken circa 2002, our entire hosting solution then took up about 8Us in that rack I am standing next to.&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Through the years to today we have tried different approaches to redundancy and achieving four 9s. I am not going to document every attempt we tried in the past. I wanted to keep this post short and too the point. Our efforts can be broken down into three bullet points.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Redundancy:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I get teased quite a bit around the office about buying two of everything. I can take it, it makes me sleep soundly at night. We look at every failure point and doubled up on it. Multiple data centers, multiple Internet connections from separate ISPs, multiple firewalls in a high availability configuration, multiple RDP/ICA load balancers, multiple web farms for our web based products, and finally, multiple mirrored SQL Servers installations including our production 2-node fail-over cluster.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Power Stability:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I mentioned before power for our building was iffy on the best days, brown-outs were a constant. Several years we made the decision to invest some serious capital to fix the situation. We ended up installing a solution from &lt;a href="http://www.apc.com" target="_blank"&gt;APC&lt;/a&gt; that included our own power generator and direct power feed from the electrical grid. The only thing I need to worry about in a power-outage is the ability to keep the generator filled with diesel and yes, I do have emergency refilling contracts. Now I look forward to storm season. The power goes out for the building but our data center hums along like nothing happened. I also have distributed a few protected power outlets through our office suite to a few key offices that would need to keep operational, like our &lt;a href="http://www.tempworks.com/products/services/payroll-processing.aspx" target="_blank"&gt;payroll processing&lt;/a&gt; division.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Internet Stability:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I can never claim that we have Internet redundancy figured out. This issue has been the most troublesome to get right. The solution we have in place now seems sound and has been working well since we brought it online last summer. Currently we have a fiber tap on the Metropolitan Optical Ethernet loop as does our ISP. That is our main pipe that terminates into our Cisco 7200. For redundancy we have two bridged T1s terminated at our Cisco 7200 and at another ISP in a different city. We’re using BGP routing between the two ISPs. Our secondary data center is on a different pipe altogether and we keep another T1 active at another location just incase we need an emergency pipe to the Internet and all else has failed. &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="740"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="246"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0890_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IMG_0890" border="0" alt="IMG_0890" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0890_thumb_1.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="246"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0926.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IMG_0926" border="0" alt="IMG_0926" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0926_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="246"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="246"&gt;         &lt;h6 align="center"&gt;Some of our routers and firewalls&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="246"&gt;         &lt;h6 align="left"&gt;One of two rows of hosting servers and UPS modules. Also me holding an award from APC for spending the most money that year. Actually it was an uptime certification.&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="246"&gt;         &lt;h6 align="center"&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="246"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0780_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IMG_0780" border="0" alt="IMG_0780" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Engineeringfive9s_9A40/IMG_0780_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="246"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="246"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="246"&gt;         &lt;h6 align="center"&gt;The shiny new generator&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="246"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="246"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Four 9s is hard and isn’t cheap. Its pretty much two or more of everything and takes about four times the man hours to get it working right. It’s a never ending battle to get unanticipated downtime to nil. I am sure as time goes on we will be tweaking our set up. As it is now it works and works great. We haven’t had an outage in about 9 months and that downtime was only about 20 minutes. We were still trying to get our BGP routes right :) &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-4274070348161709862?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/04/engineering-four-9s.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-2329827477700456523</guid><pubDate>Mon, 13 Apr 2009 16:40:00 +0000</pubDate><atom:updated>2009-09-02T16:01:30.945-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Release Notes</category><title>Enterprise 12r7 Release Notes</title><description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;New Features&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New dynamic searching engine.&lt;/li&gt;    &lt;li&gt;End-users can create their own custom searches and share them.&lt;/li&gt;    &lt;li&gt;Enhanced system for managing customer default values and rate sheets.&lt;/li&gt;    &lt;li&gt;Enhanced Resume Parser engine.&lt;/li&gt;    &lt;li&gt;Required documents management.&lt;/li&gt;    &lt;li&gt;Invoice merging enhancements.&lt;/li&gt;    &lt;li&gt;Evaluation management.&lt;/li&gt;    &lt;li&gt;Improved test score management.&lt;/li&gt;    &lt;li&gt;Grids can now be customized on a per user basis.&lt;/li&gt;    &lt;li&gt;End-users can now manage their own drop-down value lists without the need to call support.&lt;/li&gt;    &lt;li&gt;Deep integration with &lt;a href="https://www.trak-1.com/" target="_blank"&gt;Trak-1&lt;/a&gt; Background Screening. No more double data entry and real-time alerts on background report documents.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Many bug fixes since Enterprise 12r6…&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;br /&gt;See the product page &lt;a href="http://www.tempworks.com/products/software/enterprise-staffing-software.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-2329827477700456523?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/04/enterprise-12r7-release-notes.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-6057982298966330143</guid><pubDate>Wed, 08 Apr 2009 02:52:00 +0000</pubDate><atom:updated>2009-09-02T15:57:20.716-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>WPF and Terminal Services, a mix not made in heaven</title><description>&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/WPFandTerminalServicesamixnotmadeinheave_101E6/computer-destroyed-in-fire_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="left" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/WPFandTerminalServicesamixnotmadeinheave_101E6/computer-destroyed-in-fire_thumb_1.png" width="152" height="148" /&gt;&lt;/a&gt;  &lt;p&gt;When we first architected Enterprise Terminal Services performance wasn’t at the top of our priority list. Actually one our goals was to get rid of the requirement of our software to run Terminal Services in a distributed environment. It sucks to have to pay MS license fees twice. Once for the Windows CAL and then for the TS CAL. I spent a lot of time researching a distributed framework to build Enterprise on. Luckily I was fortunate to see Rocky Lhotka at a local event and heard about his &lt;a href="http://www.lhotka.net/cslanet/" target="_blank"&gt;CSLA&lt;/a&gt; framework. It fulfilled all our requirements and after reading his book I was sold. Fast forward a few years and we have a desktop client that can run locally and talk to a remote data store using not much more bandwidth than a similar browser application. Plus we get the benefit of a full trust application on the computer. So yes, we have a distributed application that run across the Internet with pretty good speed and we find ourselves still needing Terminal Services sometimes. The one factor I didn’t account for, and shame on me for being in this industry over 15 years and not seeing it, is companies like to run really old hardware. &lt;/p&gt;  &lt;p&gt;We designed Enterprise using the latest and greatest from Microsoft. Sometimes called the bleeding edge of technology. Now for developers that is great because you get to learn about stuff before it gets mainstream and old school. The problem is that our new fangled WPF UI application has some moderately hefty hardware requirements. Of course as time goes on we have Moore’s Law and business equipment upgrade cycles. Sometimes though they don’t kick in soon enough for our liking. Companies run Terminal Services to get a few more years out of their user’s desktop or the user doesn’t even have a full desktop and runs a WinTerm. Each company has their agenda and we as a company have to adapt our software to run in our market space. As Enterprise rolled out the door and into customers hands we began to learn that users sometimes didn’t have the horsepower to Enterprise and all the WPF goodness we put into it. Now I am not saying you need $5,000 gaming machine to get decent performance but something with moderately reasonable specs. In today’s hardware spending $400 at Best Buy will get you a machine that will run Enterprise pretty well. But when you’re dealing with a company that hasn’t upgraded their user machines in the last 5 to 6 years you might as well try to be running Enterprise on an Intel 486. So we have come full circle and have to deal with Terminal Services again. &lt;/p&gt;  &lt;p&gt;Late last year Aaron was tasked with redesigning our UI and take Terminal Services into account. This meant detecting when we’re running on Terminal Services and removing all our transitions. Transitions are a bad thing when it comes to Terminal Services because as we fade and side UI elements around Terminal Services needs to repaint the screen on the client end. You then end up with screen tearing and horrible lag because Terminal Services is try to catch up as you slid that panel neatly out of the way. By getting rid of all the WPF eye candy we end up with a snappy UI. We did all this work and were proud of ourselves until about month ago. Enterprise was being installed at a customer that was self-hosted and running Terminal Services. At the time we thought no big deal because we knew we had Enterprise tuned for Terminal Services sessions. What we didn’t anticipate was their Terminal Services hardware adequate. &lt;/p&gt;  &lt;p&gt;Back in the Access days of TempWorks we would recommend&amp;#160; a two CPU machine with at least 2Gb of RAM. That was usually enough to host about 25 users. When we installed Enterprise on a machine with this config we could only get 5 to 10 users comfortably on. After some pondering I came to the conclusion that we were CPU bound. Well, that was easy to figure out because the CPUs maxed at 100% utilization when we approached 10 users, the question was why. Normally Enterprise doesn’t use much more CPU cycles then any other business application. We do steal a few more then necessary when we do our fancy WPF transitions but nothing too off the scale. But in Terminal Services all those transitions are turned off so that wasn’t it. We came to the conclusion that it was a combination of issues. First of all Enterprise is very multithreaded. Almost everything we do is fired off in it own thread so the UI doesn’t freeze. Data coming and going is threaded off. Not a big deal when you’re the only person on a dual or quad core CPU machine but a big deal when you’re sharing an old single core CPU server with many users. Also compound the fact that WPF is using software/CPU rendering because you don’t have access to a GPU in a Terminal Services session. So the CPUs were maxed out trying to keep up with all the threads but also trying to draw Enterprise. &lt;/p&gt;  &lt;p&gt;To test the theory we went out and purchased a new Mac Pro desktop with 2 Quad Core Nehalem Xeons at 2.2 GHz. Since Nehalem's are Hyperthreaded we had 16 cores at our disposal. We also installed 10Gb of RAM to make sure we didn’t run out of memory and threw on Windows Server 2008 R2 beta running Terminal Services. Yes I know, a Mac running Windows. Anyway, to test I filled our training room with volunteers and had a few developers at their desktop all log in to this machine and start using Enterprise. I asked all the users to search, open records and navigate to different forms. I was relieved as I watched the server’s resource monitor. The server hardly broke a sweat. We had about 30 users logged in and 50 instances of Enterprise actively being used and the CPUs never broke 50% utilization. Better yet the CPU frequency hovered around 75% meaning the CPUs weren’t even at full power. Not bad for a $3,500 desktop.&lt;/p&gt;  &lt;p&gt;I can rest easy again knowing Enterprise runs very well on Terminal Services as long as you have current hardware. To me that is fine because it is easier to convince a company to upgrade their few servers as opposed to upgrading dozens and dozens of desktops. &lt;/p&gt;  &lt;p&gt;-Paul&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-6057982298966330143?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/04/wpf-and-terminal-services-mix-not-made.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2054313753634403416.post-1465501149983574087</guid><pubDate>Tue, 31 Mar 2009 21:13:00 +0000</pubDate><atom:updated>2009-11-05T15:18:11.809-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Blog</category><title>Milestones…</title><description>&lt;p&gt;Coming up shortly in the development of Enterprise are a few milestones that have gotten me to stop and ponder. Normally I am not very nostalgic about such things but they seem to be piling up upon each other lately. First we have another version of Enterprise coming out, 12r7. &lt;strike&gt;Not a big deal to me, just another feature set and deadline.&lt;/strike&gt; Actually it is big deal but I’ll let our marketing department hype it up. Second is more of a developer geeky thing, our 10,000th code check-in is fast approaching. Another few days and we’ll hit the magic number. Maybe I’ll give away a Best Buy gift card to the lucky developer. Third is the one that hits me the most. This June will be the third anniversary of Enterprise. It became a glimmer in our eyes during the Microsoft PDC show in Oct. 2005. We were excited by the new technology .NET 3.0 was enabling us with. &lt;a href="http://windowsclient.net/" target="_blank"&gt;WPF&lt;/a&gt; caught our eye and we haven’t looked back. So with me feeling nostalgic I thought I might dig up some old media I have collected over the years of Enterprise development.&lt;/p&gt;  &lt;p&gt;To begin our trip, here is the first project spec of what we set out to achieve in Enterprise.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="416"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/ledger%20sheets_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ledger sheets" border="0" alt="ledger sheets" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/ledger%20sheets_thumb.jpg" width="133" height="132" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/GodsFinger.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="GodsFinger" border="0" alt="GodsFinger" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/GodsFinger_thumb.png" width="170" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="148"&gt;&lt;img src="http://www.tempworks.com/Images/employee_visifile_large.jpg" width="186" height="132" /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133" align="center"&gt;         &lt;p align="center"&gt;Paper based solution&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="133" align="center"&gt;         &lt;p align="center"&gt;A miracle happens…&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="148" align="center"&gt;         &lt;p align="center"&gt;TempWorks Enterprise&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div align="center"&gt;&lt;/div&gt;  &lt;p&gt;It was more than three steps but I like to tell that story. To begin with we had to sell the idea of what we wanted to do with the rest of the company. We knew we needed to get off the Access development platform and this was our chance. Actually it was our third chance but that is another story for another time. &lt;/p&gt;  &lt;p&gt;From January 2006 to June 2006 a few of us developers went into seclusion and worked on our “Skunk Works” project. Nobody knew what we were up to and strangely not many people asked what we working on. Truthfully, I think people get sick of asking what were doing because we would launch into some C# mumble jumble, they get that glazed look in their eyes and then walk away. &lt;/p&gt;  &lt;p&gt;In June 2006 we launched Enterprise (then code named “FX”) upon the employees of TempWorks. It was kind of a fun event where we got everyone together, talked about some new products we were working on like &lt;a href="http://www.tempworks.com/products/software/paperless-employment-forms.aspx" target="_blank"&gt;DocCenter&lt;/a&gt; and &lt;a href="http://www.tempworks.com/products/software/mobile-staffing-solutions.aspx" target="_blank"&gt;TwMobile&lt;/a&gt;. Then we launched this video on a huge projector screen.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e38ca39e-29d0-423e-b2da-b0c46ee7c040" class="wlWriterEditableSmartContent"&gt;&lt;div id="4bd479b3-7626-4945-af8e-97243ea4b502" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=E8cHA3Oh_DM" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_gE0jHLOKNzU/SvNBE62LCSI/AAAAAAAAAEI/VhwoUy8ShTw/video055facae3e7a%5B2%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('4bd479b3-7626-4945-af8e-97243ea4b502'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/E8cHA3Oh_DM&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/E8cHA3Oh_DM&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;After the video introduction we gave out TempWorks FX tee shirts to everyone. We on the FX dev team made it a big event for the company. Heck, at least people got a free lunch out of the deal. At the time I wanted to make a big deal out of what we had done. I thought it as a paradigm shift in our company’s development efforts. Looking back at it now, it was. &lt;/p&gt;  &lt;p&gt;To continue our trip thru history, here are some screen shots of the evolution of Enterprise.&lt;/p&gt;  &lt;p&gt;The prototype you see in the video:    &lt;br /&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FX_Main" border="0" alt="FX_Main" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main_thumb.png" width="244" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Internal working version for 2006/2007:    &lt;br /&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main5_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FX_Main5" border="0" alt="FX_Main5" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main5_thumb.png" width="244" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Version shown at &lt;a href="http://www.staffingtoday.net/" target="_blank"&gt;Staffing World&lt;/a&gt; 2007:     &lt;br /&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main6_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FX_Main6" border="0" alt="FX_Main6" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main6_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The dark ages (early 2008):    &lt;br /&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main7_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FX_Main7" border="0" alt="FX_Main7" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main7_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Current version, debuted at &lt;a href="http://www.staffingtoday.net/" target="_blank"&gt;Staffing World&lt;/a&gt; 2008:     &lt;br /&gt;&lt;a href="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main8_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="FX_Main8" border="0" alt="FX_Main8" src="http://blogs.tempworks.com/EngineeringTempWorks/files/media/image/WindowsLiveWriter/Milestones_D3FE/FX_Main8_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Anyway, here we are today, three years of development, 10,000 code check-ins, and 7 releases later. Time does fly.&lt;/p&gt;  &lt;p&gt;Thank you Aaron Nottestad, Matt Sonnenberg, Jeff Bradford, Jason McCord, Eric Anderson, and Eric Rodewald for your efforts on developing Enterprise.&lt;/p&gt;  &lt;p&gt;-Paul&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2054313753634403416-1465501149983574087?l=engineering.tempworks.com' alt='' /&gt;&lt;/div&gt;</description><link>http://engineering.tempworks.com/2009/03/milestones.html</link><author>noreply@blogger.com (Paul Czywczynski)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_gE0jHLOKNzU/SvNBE62LCSI/AAAAAAAAAEI/VhwoUy8ShTw/s72-c/video055facae3e7a%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></item></channel></rss>
