Amcom Home Page

 Groovalicious part deux

Last time left us with a couple of very simple domain objects written in Groovy. No real behavior or anything like that, and at this point they aren't anything that we couldn't have done just as easily with Transfer or even just using queries and structs. It was kind of nice not having to create any database tables, but other than that no real world benefit so far.

Here are the updated files for this post if you would like to follow along.

Even ignoring that we have no behavior in our objects (not the point of this post), what we have is less than ideal, both from the point of view of the object model and for the relational model. Employer and Employee both have 4 properties representing an address instead of just one property that is an address. Wouldn't it be better if say, we could have the address be it's own class? That way we could implement some snazzy behavior in it and not have to repeat that logic in any object that will have an Address?

[More]

 Remote Desktop and Grabbing Apps on the 2nd Monitor

Just a quick note to address the resolution to something that's plagued me for a while now...

At work I have a dual monitor setup. At home, I have a single monitor. On occasion, I have to remote in to work from home. On occasion, I'll find that applications that were open on my 2nd monitor can't be accessed via my RDS session.

This bit me on Friday night. I needed to promote a few files up to our QA environment. Surround, our version control software, was running on the 2nd monitor. I didn't see it in the task bar, so I wasn't even sure it was running at all. I even went so far as to uninstall and reinstall the client. Nothing. Finally, at 11:30pm on a Friday night, I broke down and drove into the office so that I could promote the files.

Determined to never have to do this again, I hit Google to find a solution once and for all.

I was hoping for something built into RDS. Some sort of "bring all applications to Monitor 1", but it doesn't seem as if such an animal exists. What I did find is a 3rd party app called DeskLite. Unfortunately, it doesn't seem as if the application is maintained anymore. Any references to a DeskLite site that I found resulted in 404 errors.

I was finally able to find it, though. I don't want to link directly to it, because I'm not 100% sure about the legitimacy of the link. By that, I mean I'm not sure that the site hosting the file (http://www.shellfront.org/utils/) is truly authorized to host the file (desklite.zip). Ahem.

So far, it seems to work perfectly. DeskLite will bring up a window of all running applications. Choosing a specific app will bring that application to the center of Monitor #1. Problem solved.

If anybody knows of a better way to do this... something built into RDS, or a 3rd party application that's actively maintained, I'd love to hear it. But for now, DeskLite should save me those 11:30pm Friday night trips into the office.

 Groovy, Smashing. Yay capitalism!

Although capitalism does seem to be falling apart at the moment, at least we still have Groovy. And boy is it groovy baby, yeah.

Thanks to the (super hero like even) efforts of this guy, it is ridiculously easy to use Groovy within ColdFusion. Why would you want to use another language within a CF application? Speed, elegance, flexibility or just for giggles. Let's start with the speed.

[More]

 ColdFusion Dudes/Dudettes Wanted. East Bay Area, CA

Job Title: Sr. Software Engineer

Parameters:

  • Location: San Ramon, CA
  • Salary: DOE
  • Telecommute: Not available. Position requires face to face interaction with our onsite customer.

Description:

  • Do you spend most of your time in traffic thinking about how to solve certain problems?
  • Do you try to squeeze in one extra line of code before you have to go home?
  • Do you sometimes lay awake at night because you know there's a better way to do something (such as technical implementations, and supporting processes)?
  • Do you pay attention to the industry and apply the latest best practices?
  • Do you consider yourself a hardcore developer?

Amcom Technology, Inc. is looking for an experienced Software Engineer to join our product development team (full time). As part of a team based environment the position involves working on mission critical web based solutions that enable the efficiency and growth of our clients utilizing rapid application prototyping methodologies and rich internet application development.

We are looking for highly self motivated team oriented people who have a passion for solving both technical and non-technical problems.

Work closely with customers... As a consulting company, this position entails working closely with the customer throughout the entire life cycle of the project. From the inception of the project where problem definition and business requirements are defined, to agile development and release, and assisting in achieving project ROI.

Wear many hats... The primary role is that of development (80%-90%); however wearing many hats is a must. The various hats that can be worn, but not limited to, include: process engineer, release engineer, business analyst, I.T analyst, team lead, DBA, information architect, technical architect, usability engineer, designer, project manager, and product managers.

One of the advantages of working with Amcom is that your position can be custom tailored.

Influence change... Working directly with our customers, often interfacing directly with the President and Executive staff, this position is a highly visible one. The ability to completely influence from a corporate level the processes and policies of technology and business management are very prevalent.

Leadership at all levels... The position is a time demanding one, and requires someone naturally diligent, highly organized, self-motivated, extremely focused, and has a "do whatever it takes to win" attitude. Amcom believes in leadership at all levels - we expect people to step up and lead in their areas.

Opportunities for growth... As you grow we grow. All members of the team are critical to the growth of the company, and with that growth comes new opportunities. The further you progress with your talents and skills, the bigger the goals we're capable of achieving.

The Mission... Your mission, should you choose to accept it, is to create great user experiences for our customers and users; from the experience of developing software, to the experiences of the software itself.

Basic Requirements:

  • Work with team members to help translate customer needs into design/application specifications.
  • Architect, develop and design detailed prototypes and Web/RIA interfaces.
  • Work directly with clients to finalize application requirements.
  • Document all forms of knowledge (processes, procedures, specifications, designs, code).
  • Create and maintain database-driven web applications.
  • Integrate online applications with back-end systems (Web Services, SOAP, REST, etc).
  • Learn customer business models in order to lead technical solutions.

Required Technical Proficiencies:

  • 8+ Years of Software Development Experience.
  • Expert Level with Coldfusion 8.
  • Familiarity with Frameworks and Design Patterns.
  • Understanding of rapid development methodologies (e.g. Extreme Programming).
  • Advanced Levels with SQL, CSS, JavaScript, Web Services, XML.
  • Usability Best Practices.
  • Systems Architecture, Data Analysis, and Software Architecture.

Desired Technical Proficiencies:

  • Flex
  • Crystal Reports
  • AJAX (e.g Spry, jQuery, etc...)
  • Agile Development Concepts
  • Drools
  • Groovy
  • ColdBox
  • Transfer
  • ColdSpring

General Business and Customer skills required:

  • Close attention to detail.
  • Ability to effectively test and document your own work.
  • Great organizational and time-management skills, including an ability to estimate project completion times.
  • Ability to juggle multiple projects, tasks, and deadlines.
  • Self-motivated and self-directed: We need someone who will proactively tackle challenges, and propose innovative solutions.
  • Great communication skills: both written and verbal (Developers respond directly to client requests, so the ability to correspond professionally is critical).
  • Properly assess and meet customer needs in a professional and courteous manner.
  • Anticipate customers' needs and communicates/pitches new ideas.

Salary:

  • Dependent on skills and experience.

Contact:

  • Tariq Ahmed (Manager of Product Development). jobs @ amcomtech.net
  • Direct-Hire only, no recruiters please.

About Amcom (www.amcomtech.net):

Amcom Technology is a member of the Amcom companies located in the San Francisco Bay Area (San Ramon). The company provides premium end-to-end technology services from Web 2.0/RIA software development, to network infrastructure and business intelligence.

Amcom consists of two other divisions which include Amcom Data Processing (ADP) and Amcom Computer Services (ACS).

Amcom Data Processing was founded on April 1, 1973, and has been involved with the oil industry since 1978 with distributors and retail operations. The company currently has relationships with six major oil companies and specializes in the premiere software solutions for the Service Station industry.

Amcom Computer Services focuses on outsourcing, facilities management, programming, training, and supporting computer systems of small and medium sized businesses.

Acrobat PDF Version available

 Alternate services while we wait for Meer Meer

For those of you who attended MAX 2008 you saw this awesome demo of an upcoming Adobe service called Meer Meer which lets you see what a web page looks like in any combination of OS and Browser.

But... until this service becomes available, what's a coder to do? Well we found two other options.

Cross Browser Testing (CBT) is one of them. You provide a URL, and it takes a graphical snapshot and sends it to you (about an hour later). Besides the lag time which would impede using the service to develop and test against, we found it doesn't really work too well.

BrowserCam is the other. It's similar to CBT is similar in that you submit a capture job and it goes into some screen capture queue which you can then go back into and retrieve. At least this one you only have to wait about 5 minutes for the results.

The services are better than nothing - but based on what I saw at MAX I eagerly await Meer Meer!

 Crystal Reports Print Control Error (csprintdlg.dll)

Any CR Developers out there ever come across this?

After applying SP1 to CR Designer (2008) for a CR 2008 Server evaluation, I was no longer able to print. I tracked the problem down to the Crystal Reports Print Control dialog box (csprintdlg.dll).

This was the error from InfoView:

And this in CR Designer 12:

In order to complete my evaluation, I replaced the DLL with a copy from before the install of the InfoView ActiveX print control, and the SP1 patch:

Everything's working fine now, but I'm curious to see if anyone experienced a similar problem. SAP hasn't replied to my eval support request, and I haven't found anything on the Web for this particular issue.

 A 'gentle' introduction to BI

I've been a bit remiss about my blogging duties, so I figure I'd start with a ramble on Business Intelligence (BI) within a market that may find organizations hesitant to invest in new systems. With all the news on the economic front, I think it's safe to say that there's a huge push right now to reign in expenses, cut costs, and if at all possible, identify new potential target markets and revenue streams. That makes BI even more important, but if it's not already in place, or if there's no budget for it, implementing BI becomes more of a tough sell.

BI is not just about 'who' wants to use your data and 'what' you want to do with it once you have it. It's also about 'where' that data comes from, 'how' you can turn that data into meaningful information or intelligence, and 'when' to use it. You can call it Master Data Management, Information Management, or a slew of other terms, but the essence is this: What does your organization need in order to support its strategic objectives, where can it find that information, and how can it get that information to its decision makers? For BI to be effective, you need to have a Knowledge Management (KM) plan of some sort in place that answers these fundamental questions.

In an environment of limited dollar resources, it helps to look at BI as an EAI (Enterprise Application Integration) solution. What's EAI? It's the affordable approach to ERP (Enterprise Resource Planning) and Data Warehouse implementations. Instead of adding another layer to the IT Architecture, leverage what is already in place. Most organizations already have the infrastructure to support communications through email, corporate web portals, and file servers. Likewise, maturing businesses should also have a RDBMS (Relational Database Management System), or a mix of RDBMS's in place to support the organization's business applications. With a KM policy in hand and an understanding of your RDBMS architecture, you're in a good place to start thinking about BI.

I know this is a break from the traditional BI approach, but with so many tools available for Data Integration, you don't always need a data warehouse to build BI. Instead, look at each individual RDBMS as a silo of information, and in place of a warehouse, build a series of views, stored procedures, or file extracts to generate the blocks of data needed to support your strategic business drivers and performance indicators. Integrate the data in real time, as needed, to support your BI efforts. Not having a data warehouse should not be a deterrent to BI. It all depends on the organization's needs. At its core, BI should be flexible, and as with all things IT, there is more than one way to build a working architecture.

Take this past project for example. My employer at the time had a CRM (Customer Relationship Management) system in place to track sales, and a MRP (Material Requirements Planning) system in place for manufacturing, but no means of integrating the data between the two. Being a relatively small, but rapidly growing company, the organization had nothing in place to analyze Gross Margins on their manufactured systems. Their solution was to build a customized ERP system that could automate their GMA (Gross Margin Analysis) and support various consolidated reports. As a stopgap measure, they were working with data extracts from both systems and a set of complex Excel spreadsheets to conduct their GMA. The only problem was that by the time the GMA had been completed on hundreds of systems and tens of thousands of parts, the data was obsolete. Business was growing too fast, decisions needed to be made quickly, and management no longer had the luxury of waiting for GMA results.

Not wanting to wait months for the ERP and Data Warehouse to be built, the newly hired VP of Finance presented a list of data requirements and calculations that were needed to conduct a GMA (Gross Margin Analysis). Using the existing SQL Server and Oracle databases already in place, a SQL view using data from linked servers was created to generate the GMA data set. Not wanting to lose the hundreds of hours put into developing the GMA reports in their Excel formats, and as all the reports were linked to a master spreadsheet and published on the Corporate portal, the master GMA spreadsheet was updated to use a data connection to the new view.

Okay, so we're not talking about anything special here, and this is a relatively simple solution, but it is a good example of EAI and BI in their simplest forms. Armed with a SQL view, and a spreadsheet that automatically updates GMA results, why build a custom ERP system? Suddenly you have what you need – GMA at the click of a button. Here was the problem. The organization was ingrained with a certain way of thinking. Sales didn't care about Manufacturing, and the only thing that Manufacturing wanted was a System part number. With no lateral communication between the two sides, their processes matured on different systems, at different levels, and with no KM policy in place, over time, the disparate systems began to impact the ability of the Accounting and Finance department to reconcile the data used for GMA.

I'll leave it at that for now, and will close with this. In my estimation, good BI serves as the bridge between an organization's management, business, customers, and information technology. At its basic level, BI creates the right information at the right time for the people who need it. Ultimately you get what you pay for, but if it doesn't need to be pretty, and if you just need something that works, you don't have to spend a lot to get it. Sometimes the only thing you need is a fresh perspective, some ingenuity, and to get everyone on the same page.

Happy blogging!

Pano Valcanas
Business Intelligence Engineer

 SQL Server 2005's Correlated Joins

Read an article on an interesting new feature in SQL Server 2005, correlated joins using the APPLY statement.

In SQL Server 2000, you can't do something like this:

INNER JOIN
(SELECT TOP 3 * FROM LVCall WHERE LVTransactionID = lvt.ID ORDER BY CreateDate DESC) lvc on lvc.LVTransactionID = lvt.ID

But, in 2005 you can do this

FROM
LVTransaction lvt
OUTER APPLY
(
SELECT top 3 *
FROM LVCall
WHERE lvtransactionID = lvt.ID
Order By CreateDate DESC
) as lvc

Read the full article...

 MS SQL Server 2008 SP1 now in CTP

We've been waiting for awhile on this to come about. The big feature add with this version is they added something called "Slipstream" which makes it easier to take your base SQL 2K8 install and combine it with hotfixes and service packs (you can also uninstall service packs without uninstalling everything).

Download SQL Server 2008 SP1 CTP

 Amcom's Tariq Ahmed Flex book now available - includes free eBooks

SAN RAMON, February 16th 2009-- Amcom Technology's Manager of Product Development is pleased to announce the availability of Flex 3 In Action. With each purchase of the book, customers will also receive access to the PDF/eBook version, and the PDF/eBook version of the follow up book Flex 4 In Action when it becomes available.

Flex 3 In Action (FiA) is a book for programmers who come from traditional web technologies, and progressively takes them on a journey of understanding. Flex can easily be frustrating to newcomers who are used to the ease of their current language, so FiA takes an approach of leveraging your existing skills by using examples that you can relate to in your current tech vs how it's done in Flex. It gradually introduces topics on an as needed basis so that you only need to worry about learning one thing at a time. Plus various ways of doing the same thing are explained in depth so that you understand your options... and lastly, FiA makes learning Flex fun.

The book is available on Amazon.com, and other popular book outlets.

Amcom Technology is a member of the Amcom companies located in the San Francisco Bay Area (San Ramon). The company provides premium end-to-end technology services from Web 2.0/RIA software development, to network infrastructure and business intelligence.

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Contact Blog Owner