Profile last updated: 5/27/2006
I started working with SalesLogix and other CRM products professionally in January 2005. Before that I was an independent consultant, primarily using Microsoft development technologies (Visual Studio .NET, Microsoft SQL Server, ASP.NET, etc.). My primary skills are in Visual Studio, Visual Basic, SQL Server, and web programming (including things like DHTML and SOAP).
Outside of this stuff I enjoy my cats and listening to and making music, especially with
FL Studio. I'm also a heavy user of my Windows Media Center 2005 Extender for XBox on which I pre-record and watch reruns of Star Trek: The Next Generation, Futurama, and Stargate: SG-1. Yeah I'm a nerd, but at least I'm having fun. :)
My agenda at slxdeveloper.com...So here we are with .NET Extensions now getting integrated with SalesLogix in the upcoming v7. Cool. "So .. uhh.. what's that do for us?" There are a few obvious areas for exploration, namely building up an object model for data access and implementing data-bound forms in Main Views. There are other important areas of interest, too. All of these new opportunities to explore are very exciting to me. This is the moment I've been waiting for ever since I got my hands on this awesome CRM tool.
My primary objective is to build--and assist my team mates in building--add-on SDK tools that we can use internally to explode our capacity as SalesLogix developers.
My secondary objective is to learn about SLX development, and to reinforce my learning by making challengable statements and asking questions.
My tertiary objective is to share the wealth. Ryan Farley has done an amazing job with this site, but more so he's a personal inspiration for me. If I can't get my own ideas plugged on his site I can share them on my own site, but I have no doubt I'll be able to fit my "warez" here, down the road. :)
My tools...Some people judge a developer by his tools. A few tools currently installed in this new laptop I got about a month ago, most of which I use regularly, are:
- SalesLogix v6.2.4 (of course)
- VMWare Workstation v5.5 with several snapshots of different versions of SalesLogix including: 6.2.0, 6.2.1, 6.2.2, 6.2.3, and v7 beta.
- Visual Basic 6.0
- Delphi 7 (still learning)
- Visual Studio .NET 2003
- Visual Studio 2005 Professional
- Visual Basic 2005 Express (dev env testing)
- SQL Server 2000 (named instance; remotes testing)
- SQL Server 2005
- SQL Server 2005 Express (named instance; remotes testing)
- MS Office 2003 (it actually is a development environment...)
- SalesLogix Mobile Enterprise Edition v4.1
- NDoc
- Reflector
- Snippet Compiler
- Depends
- Windows SDK (May 2006) w/ WinFX runtime, MS PowerShell, "Orcas" preview, and other WinFX/WinSDK development tools
- Paint.NET (Photoshop is too bloated)
- Oracle client tools including Visual Studio integration
- Red-Gate Sql Prompt :D
- Gridinsoft Notepad Pro
- The Regulator
- WinMerge
- .. the list goes on but that's enough
My strengths...My skills are in Windows and SalesLogix programming and development, of course. Primary passions in Visual Studio (.NET languages), but due to earlier passions (and job requirements) the greater of my skills are still in all the technologies surrounding ASP & DHTML: Dynamic Content, IE-DOM, JScript, VBScript, VB6, and SQL Server. Used to be a great Unreal Tournament player, too. Still hold my own, sorta, in Halo.
My weaknesses...- *nux - I've played with Linux and Solaris, I can install Fedora, I can get around, I can use vi ... but my knowledge is rarely reinforced and I'm regularly having to re-learn. I've spent months on the *nix platforms, altogether, but not years. I've certainly never done development in it. Would love to see Wine do better, and am very happy about the Mono initiative.
- Oracle - It's not that it's intimidating... well, it's that, too. But man is it ugly. Don't you know that toads cause zits? I just don't like using Oracle. So I don't.
- C/C++ - I have some skills here but very, very weak. I can read half of it. I had to maintain a C DLL that was a JNI (Java Native Interface) bridge to an ActiveX control several years ago. I also did some OpenGL tutorials from
NeHe and some tutorials in
Petzold's Programming Windows book. But for the most part, I am still incapable of building COM objects or any sort of moderately advanced thing with it.
- Deep COM - I am familiar with the concepts of IUnknown and IDispatch (familiarity is noy mastery) and early binding and late binding and ClsIDs and ProgIDs, and can build COM components in VB6, VB.NET, and C#--and I think there was a "scriptlet" or some other name of technology that I learned years ago that allowed you to build ActiveX controls in VBScript+HTML (no, not just VBScript classes). But doing things like building CLR bridges in Managed C++ for COM invocation without registering a type library, that sort of thing is still something I'm reading up on.
- Delphi - I'm learning it, but as of this profile update I still can't even read implemented Object Pascal. It's a lot like C++, the tutorials are really easy to read, but looking at other people's code, it's just completely indecipherable. I have never compiled anything with it yet, but I'm trying to get into it.
- Ruby - Hardly know what it is, other than that it's a programming language that's supposedly more "evolved" than OOP but isn't OOP. Dunno what "Rails" is, either, but from what I understand, "Ruby on Rails" is a web development platform. I assume that the equivalent in the Microsoft world would be ASP.NET. But since "Ruby on Rails" is completely agnostic toward .NET, it doesn't grab my attention.
- Advanced Transact-SQL - Queries are fine but where most [non-SalesLogix] shops are heavy Stored Procedure users, I admit I'm a little weak.
- WinFX - This is something we're all going to need to get to know. I've watched a lot of
Channel 9 videos and read a few articles on WPF and WWF (way too little on Indigo), but for the most part I'm still quite the newbie at WinFX implementations. Not apologizing for it, though--as of this profile update it's still in beta, as is Windows Vista.
My old bits...A few of the several things I've built or written and shared with the Internet community at large over the years ...
- PowerBlog -
http://www.powerblog.net/ (note my original XML-RPC library, DHTML editor, Active Scripting macros implementation, .NET plug-in extensibility, dual implementation in VB6 and then in C#, etc)
- TCP Port ReRouter -
Only place I found still carrying it..- Sourcecode tidbits @ PlanetSourceCode.com (be sure to scroll down past the ad) -
.NET,
ASP & VBscript,
Javascript/DHTML,
VBOn personalities ...A lot of us might have to sit around and stare at a computer screen all day long, but we're still human beings, and ultimately all problems in the universe boil down to humanity, from military-driven wars to computer bugs. Knowing yourself--how you think, how you communicate, how you react to things, and so on--is probably the most important key to personal success. Isn't it ironic, though, that knowing one's weaknesses is as important as knowing one's strengths in the objective to succeed?
But because each of us sits in his own tent--a brain controlling a nervous system surrounded by muscles and blood vessels and other tissues, held up by a bone structure and wrapped in a few layers of skin--and each tent dweller is his own entity, not someone else's, sometimes there is very little we can do about others' thoughts and actions. This can be frustrating.
Scenario: A == B when Ay and By or Az and Bz and not Ay and Bz or Az and By. Person 1 says, "A != B". Person 2 says, "A == B". Person 1 simply disagrees. Person 2 admits that he might have been looking at something else. Person 2 soon realizes y and z must be factored. Person 2 says, "A == B when Ay and By or Az and Bz and not Ay and Bz or Az and By. In any case, if you factor in y and z and handle those scenarios, whether A == B or not won't matter." Person 1 says, "So you see, A != B." Person 2 says, "It depends on y and z. We're both right." Person 1 holds a grudge against Person 2 because he did not actually admit that he was wrong, but Person 2 didn't believe he was any more wrong than Person 1 in the first place. Person 2 carries on and discusses how to deal with y and z, using Ay and Bz as an example, but Person 1 continues to say that A != B and clearly wants an apology.
Person 1 apparently saw Person 2's comment (A == B) as a challenge against Person 1's statement (A != B). Both Person 1 and Person 2 believe he was right, but Person 1 was holding to his guns
against Person 2, rather than agreeing to disagree. I was Person 2 in this example in a recent situation. I am an objective thinker. Everyone has a sense of 'self' and wants to preserve his ego, there is nothing inherently wrong with that. But Person 1 was attacking Person 2 (me) rather than focusing on the facts. These are the sort of people I have to deal with from time to time. But because I am an objective thinker and value facts over feelings, I see an apology (from Person 2 to Person 1) as a peacekeeping lie, not as a condolence. And I hate lying.
A science that I have yet to master is knowing what sorts of compromises one is expected to make. It is painful to a male human ego to be challenged (Person 2 against Person 1), but it can be equally painful to a male human ego when the challenger must submit in any way to the challenged entity as he attempts to double-back and recompense for his ego's deflation. And what happens next? One of two things--one person backs down or the situation escalates. So I try to avoid these fights--really, that's what they are--but some people thrive on their egos.
I'll admit that technology--specifically beyond-the-SalesLogix-black-box technology, such as developing in Visual Studio--is something I tend to be a little competitive in. However, this is not competition to stroke my ego or intentionally make enemies, so much as competition to enjoy what I do and try to reinforce my skills, like a good game of football. I actually enjoy what I do and in my excitement it sometimes comes across unintentially as forceful. I think objectively, not emotionally, and occasionally forget about tact. If I'm wrong about something, I'll change course when corrected but that doesn't mean I will apologize about that (in particular) during a technical discussion. In my view, technical discussions should not be burdened with emotional sap or prideful attacks to humble another's ego. On the other hand, if I offend you, please e-mail me ASAP!! I trust people to be honest with me because I myself am pretty direct in my honesty, but sometimes people would rather hold a grudge than simply state, "Did you really mean XYZ? If so, that offends me." I'm not here to make enemies and am usually devastated when I find out people have developed a grudge against me because of my involvement in the community. But please
do not have someone else speak for you (no matter who you are) if I have offended you, and do not speak for someone else; talking about me behind my back and figuring out "what to do with Jon", or especially telling me off on behalf of others, is a sure-fire way to proactively cause me to distrust you, period. If I offend you, e-mail me and explain the offense in detail in an e-mail, and be careful not to be overly exaggerating or else, like anybody would, you may find me being defensive.
Regarding the SalesLogix community and veteran SalesLogix users ...I started pretty late in the game for SalesLogix: right around January 2005. It's been an arduous journey for me, catching up on the "-isms" of SalesLogix. It's also been interesting to look at versions that came before my time, having "features" that no longer exist and that therefore no longer relate to me, but help me identify with how much better some of the newer features are compared to the old.
Unfortunately, most of the people I've spoken with who have spent years working with SalesLogix--these being SalesLogix community leaders--have spent far more time than I would want for myself within the "walls" of the customizability of the product. I'm not particularly used to the idea of being a "developer" using
only the tools that are provided by, exposed by, and work with the product I am developing for, yet most of the SalesLogix users I have seen have done as much. So most of my personal energies during my free time are spent trying to learn from guys like Ryan Farley, people who work outside of the box to get the SalesLogix product extended outside of its own walls. This is not to say that the development tools provided in SalesLogix are limited and few (although a few minor limitations do exist and can usually be worked around), but rather the vast talent pool of people like Ryan who are great software developers outside of any particular niche product like SalesLogix have been largely untapped by this community.
Sadly (for me), the same users of SalesLogix mentioned above having years and years of experience with SalesLogix are also very proud of their experience, with good reason: the stories of SalesLogix past remind me of listening to the elderly veteran gentlemen who were interviewed in the mini-series Band of Brothers. Witnessing these stories is, however, an emotional experience at best, and an irrelevant experience at worst. New technologies are evolving at Internet speed. SalesLogix as a product has been faithful to open many of its APIs up to external software developers, but the power within the toolset alone simply does not compare to tools like Visual Studio 2005.
That said, I am particularly unmotivated by insulting labels applied to me such as "whippersnapper" or "young hot head" in the context of my involvement with the SalesLogix community. These terms are disrespectful for my experience beyond SalesLogix. The world does not end at SalesLogix's "-isms". It will take a lot more than the witnessing of ACT!'s foundings and SalesLogix's original database drivers in order to fully grasp COM/CLR interopability or SQL Server 2005 managed stored procedures or fully integrated data-bound Windows Forms or AJAX-enabled, SalesLogix-driven web based solutions or SalesLogix-plugged XML Web Services (SOAP). I know for a fact that many of the veteran SalesLogix users are familiar with these things, too. All I'm saying is that I know where my strengths are, and in those areas I see myself as no less than peer.
That was my chance to defend my pathetic ego. It might appear bloated, but the reality is that I'm tired of being kicked around by the veterans. I'm an eight-year veteran software developer, too; my experience is just quite a bit more diverse in technologies, that's all. My eight years don't compare to people like Ryan Farley who has fifteen, but that's why I'm a guest here, not the host here, and I'm always looking for other Ryan Farleys to inspire me as well.
If you have met me in person ...To those veterans who have met me in person to give me a piece of their mind, don't think that by sitting down and asking me a few questions in person amongst hours bragging about your history with SalesLogix that you've impressed me. The past of SalesLogix is irrelevant; the product has evolved greatly and I'm working with SalesLogix as it is now, not as it was. And don't assume in that time frame of a few questions that you've collected all that's in my head or background; I'm far better at communicating my own journies with the written word, where I am free to take as much time sharing my background without inturruptions as you are. Politely, at least I allow you to skip past the drivel.
On a happier note...For the most part I do enjoy the SalesLogix community and look forward to future involvement. I know who I should steer clear of as well as what venues are more appropriate for my personality. But I think I have a lot to contribute to the community and I look forward to a lot of learning from the community.
Thank you for sharing in my vanity.... and thank you for your support. :)
BTW, Ryan Farley.... is the man.