I was teaching an introductory Java class the other day. We were covering some of the basic methods available to handle some common tasks. Among the items I showed them was the Integer.valueOf() method. In Java, valueOf() simply takes a String representation of an integer and returns the strongly-type value of that integer. I wanted my students to know it existed, and I, of course, pointed out a common pitfall. If you pass valueOf() a String that is not a valid representation of an integer, you will see a runtime exception. I paused after I pointed it out in class for a second. I asked, “Why on earth are we allowed to pass in a String value that doesn’t represent an integer in the first place? I have no idea.”
I don’t think my students quite took my meaning, but I do think the question is valid. Java and C# style object oriented programming (OOP) includes a way to make sure function (or method) parameters meet requirements: the type system. We’re told we should use it from the time we’re beginners at these languages.
So why does almost no one actually follow the best practices for preventing runtime failures at compile time? Continue reading “En Garde – Untapped Type Power”
This is just a musing; it should not be mistaken for an attempt at insight. I am not an information scientist. Two separate topics popped up recently, which made me think of an old idea I’d thought about a long, long time ago. Can we generate all possible interesting images? Continue reading “Functions in the Noise”
Eric Lippert has a very nice series outlining some common pitfalls of solving a seemingly simple problem in C# (and object oriented programming in general), that of encoding end-user requirements into the type system via inheritance. I thought it was very though provoking and well done. In the end, the solution he comes up with left me nonplussed, so I wanted to ponder on it here.
Continue reading “Wizards & Warriors & Wheels”
I got a question from Veronica in the comments of the Jitterbit Best Practices post asking about specifics on logging and error handling.
Out-of-the-box Jitterbit actually provides decent default logging and notifications, but the details can be really lacking. It does require a bit of tinkering to get exactly the information you want recorded or sent out exactly how you want it.
Continue reading “Jitterbit Logging and Error Notifications #Boring #SomeoneHasToDoIt”
As I said before, Markdownpad 2 Rules. One thing that was missing was math markup of any kind. I take a lot of school notes and find myself wishing I could type out math notation instead of needing to resort to pen and paper. A post on the MarkdownPad 2 forums said using MathJax was a possibility so I looked into and decided to write up a little guide.
Continue reading “MathJax with Markdownpad 2”
Conga Composer is an app for SalesForce that pulls data from records and combines it with a template to create a final document. For a basic report, pulling data directly out of SalesForce and generating it as a PDF, the below items I discuss are probably overkill. To persons working with complex documents with data sourced from numerous related objects and highly-variable layout and formatting, the below information may be of use.
Continue reading “Conga Composer Lessons Learned”
At my current position, we handle a lot of data shuffling using the Jitterbit integration tool. It’s a small product by a small company, but they’ve been working on it for a while and it has some interesting features. It seems primarily geared towards the semi-technical user – maybe an IT manager who needs to feed some data into SalesForce from an on-premises HR system, or the like, and doesn’t have time to figure out a large, comprehensive solution like Cast Iron, Talend, or Informatica. Jitterbit aims to be a turnkey solution.
But that isn’t how we wind up using it; our requirements generally quickly push us into the “advanced scenarios” when migrating data. As such, these best practices focus around advanced or complex Jitterbit jobs. If an out-of-the-box Jitterbit Connect wizard gets you exactly what you need, please ignore all the advice here. If you find yourself having to do a lot of work “by hand” in Jitterbit, performing tons of complex transformations or manipulations of data, then you may want to read on.
Continue reading “Jitterbit Best Practices”