Blog

Java Developer – CRM

Automotive Industry Leader is seeking a Java Developer with CRM experience in the Dunwoody area of Atlanta. In this role,you will be responsible for the development,testing,maintenance,and support of features built within Salesforce.com.

The individual in this role works with some guidance to develop new software or enhance existing systems,while ensuring that changes work in conjunction with other parts of the overall system. A Developer programs software code changes using appropriate programming languages,performs unit and integration testing,and assists in software releases. A Developer also provides support and troubleshooting for software systems and performs analysis for the implementation of future products and/or upgrades.

RESPONSIBILITIES:

Participates in cross-functional teams that address strategic business issues involving CRM and sales operations
Develops integration processes using Salesforce.com’s Web Services API
Builds client-specific solutions on the Salesforce1 platform using Apex and VisualForce.
Remains thorough when conducting trial runs of programs and software applications to ensure the production of desired outcomes.
Remains flexible to the ever-changing needs of the customers and the industry.
Identifies and addresses the problems with a given design. Correctly handles unexpected exceptions of program code to fit the needs of each project.
Identifies errors through code review,makes appropriate changes,and rechecks the program to ensure desired results are produced.
Understands all knowledge areas of software development (as defined by SWEBOK),including requirements,design,construction,testing,maintenance,configuration management,quality,tools,and methods.

QUALIFICATIONS:

B.S. Degree in computer science,information systems,or related area,or equivalent work experience.
At least 2-4 years software development experience in specific area (e.g.,Java/Web); experience writing SQL queries and accessing databases (e.g.,Oracle,MySQL,etc.); experience with source code control product (e.g.,CVS,Subversion,SourceSafe,etc.); experience with tuning performance of application code or data access a plus; experience with development methodologies (e.g.,Agile,SCRUM,etc.) a plus.
Strong communication and problem solving skills required. Ability to think analytically,make decisions,and continuously improve and innovate. Candidates must also have functional and technical expertise,have consistency and quality in their work,and work well in teams.
Experience programming in Java
Familiarity with operating systems (e.g.,Linux,UNIX,iSeries,Windows,etc.)
Experience with database query tools (e.g.,SQuirreL,DBVisualizer,etc.)
Experience with development IDEs (e.g.,Eclipse,NetBeans,etc.)
Experience with database design and access using SQL
Experience with HTML,JavaScript,and CSS for Web Developers
Experience with application servers and J2EE containers and their configuration (e.g. Tomcat,Glassfish,etc.)
Experience with web servers and their configuration (e.g.,Apache)
Experience with unit testing and build tools (e.g.,junit,ant,maven)
Familiarity with XML,parsers,and web service products is a plus (e.g.,XML,XSLT,Axis,JAXB,etc.)
Java certification a plus
Experience with Salesforce.com or any other CRM a plus

Posted in ajug_job

Marketing Analyst

Based in Atlanta,Vanco Payment Solutions is a leading provider of electronic payment services to over 30,000 clients. The company has earned a reputation as a trusted industry leader by offering services that combine an unparalleled mix of technology,security,and superior customer service.

Vanco Payment Solutions is seeking a Marketing Analyst professional to join its Marketing team. The Marketing Analyst is responsible for creating scalable processes that ensure best practices in lead generation and databse management.

Essential Job Functions:

Conduct complex data analysis that will be used to inform strategic decisions by stakeholders across the company
Draw compelling and purposeful correlative insights from marketing efforts and sales results’ identifying repeating patterns and winning combinations
Develop and implement email lists,workflows and other assets in Hubspot

Create and maintain metrics reports on marketing and sales activities
Manage technical aspects of key marketing systems (marketing automation,CRM) used to generate,distribute,and report on leads
Ensure data synchronization and integrity between CRM and Hubspot
Establish and maintain scalable processes that ensure best practices in campaign and lead management
Evaluate new technologies and add-on applications to improve and optimize marketing team performance

Education and Required Skills:

4 year degree in Bachelor of Arts or Bachelor of Sciences
3-5+ years experience reporting and data analysis,demonstrating strong analytical skills (including mastery of Microsoft Excel),preferably in marketing and/or payments
Experience with marketing automation systems (e.g. HubSpot) and integrating those systems with other technologies (e.g. CRM platforms) is a strong plus
Ability to manage multiple projects at the same time in a fast-paced environment
Technically capable,excellent communicator,and a desire to improve processes
Ability to produce high quality work on tight timelines with great attention to detail
Be a motivated self-starter who is reliable and holds a personal interest in “electronifying” payments

For more information,or to apply now,you must go to the website below. Please DO NOT email your resume to us as we only accept applications through our website.

https://vancopayments.hirecentric.com/jobs/80390-23362.html

Posted in ajug_job

Marketing Manager

Based in Atlanta,Vanco Payment Solutions is a leading provider of electronic payment services to over 30,000 clients. The company has earned a reputation as a trusted industry leader by offering services that combine an unparalleled mix of technology,security,and superior customer service.

Vanco Payment Solutions is seeking a Marketing Manager professional to join its HR team. The Marketing Manager is responsible for creating and implementing compelling and strategic marketing plans.

Essential Job Functions:

Develop sales campaigns for Mega/giga churches and partner sales programs,product launches,church/nonprofit member engagement and supporting our needs of our internal clients of HR,Finance,Risk/On-boarding and Client Service
Manage marketing calendar and budget for these areas of the company
Work closely with internal departments to implement plans successfully throughout the organization
Coordinate advertising and tradeshow activity and maintain the necessary relationships with vendors and colleagues
Oversee internal social site (intranet) platform,fostering company camaraderie
Collaborate with creative team to develop high yielding materials including specific tactics,offers and content as needed
Work with Marketing Analytics team to measure,test and adjust campaigns for optimum results

Education and Required Skills:

4 year degree in BA/BS,communications or closely related field
Ability to produce high quality work on tight timelines with great attention to detail
Be a motivated self-starter who is enthusiastic,persistent,reliable and holds a personal interest in “electronifying” payments

10+ years marketing experience
Outstanding writing and marketing communication skills

For more information,or to apply now,you must go to the website below. Please DO NOT email your resume to us as we only accept applications through our website.

https://vancopayments.hirecentric.com/jobs/80386-23362.html

Posted in ajug_job

Every build is special

Since Semmle's business involves integrating with our customers' builds, I'm very sympathetic to Tim Boudreau's perspective on simple plain-jane builds that just work:
But with time and enough consulting customers, you grow a real appreciation for projects you can simply check out from version control and build.

It's always a relief when someone wants to, say, build a stock iPhone app using xbuild. It's often fine when they want to build a C program using msbuild. Third place is Maven, for a simple Java program; I say third place, because hardly anyone uses it without loading it with a bunch of plugins that fundamentally change how it works. But still, at least the overall project structure is somewhat standardized.

In my modest experience, I only really see the above for relatively small and simple projects. As "Scott" puts it in the first comment at the above link:

The idea that your build is "not as special as you think" more often false than it is true.

I just skimmed a code base I have handy, and here are some of the things I see in there that break the mold of any off-the-shelf build tool:

  • It uses parser generators, such as ANTLR.
  • It's mainly a Java code base, but there is a little bit of code in all of: C, Objective C, JavaScript, Scala, C#, and Python.
  • It uses a home-grown stack trace obfuscator and de-obfuscator that involves bytecode rewrites on the deployed jars.
  • It includes its own version of zipmerge, with options not available in the open-source version.
  • It uses the JIT support in mini-Lua to generate machine code that is then compiled into string literals in a C program.
  • It includes a proprietary query language and numerous queries in that language. Those queries get compiled during the build, using a query engine that is also compiled during the same build.
Posted in Blogroll

Every build is special

Since Semmle's business involves integrating with our customers' builds, I'm very sympathetic to Tim Boudreau's perspective on simple plain-jane builds that just work:
But with time and enough consulting customers, you grow a real appreciation for projects you can simply check out from version control and build.

It's always a relief when someone wants to, say, build a stock iPhone app using xbuild. It's often fine when they want to build a C program using msbuild. Third place is Maven, for a simple Java program; I say third place, because hardly anyone uses it without loading it with a bunch of plugins that fundamentally change how it works. But still, at least the overall project structure is somewhat standardized.

In my modest experience, I only really see the above for relatively small and simple projects. As "Scott" puts it in the first comment at the above link:

The idea that your build is "not as special as you think" more often false than it is true.

I just skimmed a code base I have handy, and here are some of the things I see in there that break the mold of any off-the-shelf build tool:

  • It uses parser generators, such as ANTLR.
  • It's mainly a Java code base, but there is a little bit of code in all of: C, Objective C, JavaScript, Scala, C#, and Python.
  • It uses a home-grown stack trace obfuscator and de-obfuscator that involves bytecode rewrites on the deployed jars.
  • It includes its own version of zipmerge, with options not available in the open-source version.
  • It uses the JIT support in mini-Lua to generate machine code that is then compiled into string literals in a C program.
  • It includes a proprietary query language and numerous queries in that language. Those queries get compiled during the build, using a query engine that is also compiled during the same build.
Posted in Blogroll

Still want to go to DevNexus 2015 (for free)? Room Volunteers Needed!

We are still looking for a few more room volunteers to help us with the monitoring and basic quality control of the breakout session rooms at DevNexus 2015 next week.

In total we need 24 volunteers (12 tracks x 2 days) for the 2 main conference days (March 11 and 12)  It will be first come, first serve - So please apply ASAP. We will be accepting room monitors from now and up until Thursday, March 5th.

The room monitor will be responsible for:

  • Getting a copy of the presentation slides from speakers right after each session
  • Making sure speakers don't go over their allotted time
  • Communication of any room related issues (power, sound , temp... etc).
  • Count the attendees in each session
  • Provide some feedback in regards to the observed sessions

A volunteer will be in charge of a single track room for one full day. Then s(he) will be free all day on the alternate conference day. For example, you monitor the Agile session room on Wednesday, then you are free to attend any session on Thursday.

Please contact info at ajug dot org if you are interested with the following info:

  • Day and Track
  • Alternative Day and Track 
  • Name
  • Email
  • Phone

Also, let us know if you have any further questions.

THANKS!

Posted in Blogroll

Still want to go to DevNexus 2015 (for free)? Room Volunteers Needed!

We are still looking for a few more room volunteers to help us with the monitoring and basic quality control of the breakout session rooms at DevNexus 2015 next week.

In total we need 24 volunteers (12 tracks x 2 days) for the 2 main conference days (March 11 and 12)  It will be first come, first serve - So please apply ASAP. We will be accepting room monitors from now and up until Thursday, March 5th.

The room monitor will be responsible for:

  • Getting a copy of the presentation slides from speakers right after each session
  • Making sure speakers don't go over their allotted time
  • Communication of any room related issues (power, sound , temp... etc).
  • Count the attendees in each session
  • Provide some feedback in regards to the observed sessions

A volunteer will be in charge of a single track room for one full day. Then s(he) will be free all day on the alternate conference day. For example, you monitor the Agile session room on Wednesday, then you are free to attend any session on Thursday.

Please contact info at ajug dot org if you are interested with the following info:

  • Day and Track
  • Alternative Day and Track 
  • Name
  • Email
  • Phone

Also, let us know if you have any further questions.

THANKS!

Posted in Blogroll

Writing a Maven Plugin Unit Test

If you are trying to write a Maven plugin with unit tests and following Apache’s Maven documentation you may end up with a dependencies like this :

 <dependencies>
        <dependency>
            <groupid>org.apache.maven</groupid>
            <artifactid>maven-plugin-api</artifactid>
            <version>3.2.5</version>
        </dependency>

        <!-- dependencies to annotations -->
        <dependency>
            <groupid>org.apache.maven.plugin-tools</groupid>
            <artifactid>maven-plugin-annotations</artifactid>
            <version>3.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupid>org.apache.maven.plugin-testing</groupid>
            <artifactid>maven-plugin-testing-harness</artifactid>
            <version>3.2.0</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>

    </dependencies>

Because that is what their docs say. Their docs are lies straight from the pits of hell. Your dependencies section should look like this :

<dependencies>
        <dependency>
            <groupid>org.apache.maven</groupid>
            <artifactid>maven-core</artifactid>
            <version>3.2.5</version>
        </dependency>
        <dependency>
            <groupid>org.apache.maven</groupid>
            <artifactid>maven-artifact</artifactid>
            <version>3.2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupid>org.apache.maven</groupid>
            <artifactid>maven-compat</artifactid>
            <version>3.2.5</version>
        </dependency>

        <!-- dependencies to annotations -->
        <dependency>
            <groupid>org.apache.maven.plugin-tools</groupid>
            <artifactid>maven-plugin-annotations</artifactid>
            <version>3.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupid>org.apache.maven.plugin-testing</groupid>
            <artifactid>maven-plugin-testing-harness</artifactid>
            <version>3.3.0</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>
    </dependencies>

I discovered this after trying to debug the following stack trace

Caused by: java.lang.ClassNotFoundException: org.apache.maven.execution.MavenExecutionResult
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 23 more

and only finding a bug in Maven’s tracker marked closed as a duplicate. Duplicate of what? Who knows. Eventually I had to break down to the tried and true method of copying code from a project that works. A big thanks to simpligility and the APL.

Posted in Blogroll

Another rant on Android Studio

There are two types of software in this world, software people complain about and software nobody uses. I use Android Studio and I will murder before going back to Eclipse, but my preferred build system for Android is still Maven. This is not going to change for a very long time because the Gradle integration tooling (IDEs) and the Android Gradle ecosystem aren’t caught up. There are many better tools and plugins which work wonderfully in the Maven ecosystem and fail utterly in the Gradle Ecosystem.

When the correct plugins exist, it is more pleasurable to work in Maven than Gradle full stop. The tooling and autocompletion around Maven is much much better. As a example, I have auto completion for artifacts in my IDE of choice in Maven which is regularly indexed from Central. In Android Studio I do not have this feature. In my preferred IDE, NetBeans, Maven projects are opened unaltered with no weird side effects such as creating dot directories or IDE files. In Android Studio importing an Android Gradle project is like playing roulette. Do I open the project or do I import it? Will Android Studio find my code this time or do I have to close the IDE, delete the directory, re-clone, and try again (an extreme example but this is in comparison to NetBeans where opening always works).

The ecosystem gulf between Maven and Android Gradle is terrifying. Code formatting, license plugins, automated testing harnesses, code coverage reports, etc all JUST WORK with Maven and Android. Android Gradle forks and is incompatible with the Java plugin. This means that every project which exists in Gradle to perform some hideously boring task (i.e. manage license headers) has to be rewritten to include Android support. This doesn’t seem to be happening.

What can Android Studio do to get better? 1) Fix importing code. Don’t leave me with a useless project with just the Gradle view EVER. 2) Don’t drop .iml and .idea directories in my project EVER. 3) Fix auto completion when editing the gradle files. It is REALLY painful right now and trivial tasks (is this still the latest version of this library, is this groupId org.apache.project or org.apache, etc) requires a trip to web browser land instead of an Ctrl+Space to see what is in the drop downs. 4) Make the Android plugin depend on the Java plugin and work correctly with it.

In conclusion, I don’t hate Gradle, I don’t even hate the Android Gradle plugin. I hate the NIH which pervades the Android Gradle plugin and the break from the larger Java ecosystem that it represents.

Posted in Blogroll

AeroGear Android 2.0 Release

AeroGear Android 2.0

It has been a long road since June but here it is, 2.0. If you checked out our alpha back in October things are looking better. We’ve fixed a few bugs, updated a few docs, made a bunch of demos, and are ready to share with the world!

New Features since 1.4

Modularization

Android has a 16-bit method limit in its dex file format. In service to this we have broken the library up into smaller modules. Now you only need pipes you won’t also include the data store. Encryption won’t require OAuth2, etc. Each module is now it its on github repository :

Module Repository Depends on
core https://github.com/aerogear/aerogear-android-core
pipe https://github.com/aerogear/aerogear-android-pipe core
auth https://github.com/aerogear/aerogear-android-auth pipe
security https://github.com/aerogear/aerogear-android-security core
push https://github.com/aerogear/aerogear-android-push pipe
store https://github.com/aerogear/aerogear-android-store security
authz https://github.com/aerogear/aerogear-android-authz pipe, store

AAR packaging

Since 1.4 AAR has become the official, supported library package format for Android. As such apklib has been deprecated and removed. AAR’s of 1.3 and 1.4 were released prior as a preview technology and are now stable and default.

Fluent configuration

Out are the old FooConfig beans and in are fluent builders!

Pipeline pipeline = new Pipeline(SOME_URL);
PipeConfig config = new PipeConfig("myPipeName", MyModel.class);
config.setFoo(foo);
config.setBar(bar);
Pipe pipe = pipeline.pipe(config);
/* snip */
Pipe pipeInAnotherPlace = pipeline.get("name");

Now things look like this:

PipeManager.config("gp-upload", RestfulPipeConfiguration.class)
           .module(AuthorizationManager.getModule(MODULE_NAME))
           .withUrl(new URL("https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart"))
           .requestBuilder(new GoogleDriveFileUploadRequestBuilder())
           .forClass(PhotoHolder.class);
/*snip*/
Pipe pipe = PipeManager.get("gp-upload");

Pluggable Configuration Providers

It is much easier to enhance the manager classes and add new configurations. Before you had to not only write a factory method but also call super classes and such nonsense to make sure you didn’t accidentally break the default classes. Now you just include a static block in your configuration class and everything is gravy!

static {
  AuthenticationManager.registerConfigurationProvider(CustomConfiguration.class, new       ConfigurationProvider<customconfiguration>() {
    @Override
    public CustomConfiguration newConfiguration() {
      return new CustomConfiguration();
    }
  });
}

Migration of integration tests

All of our integration tests for modules are included in the modules project. Before these were a separate project (and a pain to maintain).

Android Maven Plugin 4.0

Among other things this includes a new project source layout, lots of AAR compatibility fixes, deprecation of APKLIB, and many other minor fixes and cleanups. For us it means better support for use in Android Studio projects.

API changes and cleanups

All methods marked @Deprecated in 1.4 have been removed. A few other methods which SHOULD have been deprecated have also been removed. Additionally, all former factory methods deprecated by the new builder pattern have been removed.

Dropping support for old Android versions

We’re dropping support for Gingerbread, Honeycomb, and Ice Cream Sandwich. AeroGear Android is now only supporting Android 4.1+.

Android Lollipop

We support Android Lollipop. All of our builds and tests run against the Lollipop APIs and VM.

Loads of minor bug fixes

Dependency cleanup

We no longer use Guava internally. This will VASTLY reduce the number of methods in use. Since we no longer support Gingerbread, the support-v4 dependency has also been removed.

Facebook OAuth2 Support

The OAuth2 module works with Facebook.

OAuth2 configurable refresh token URL

The URL you use to fetch refresh tokens has been made configurable. Before it was the same as the access token endpoint.

EncryptedSQLStore has explicit open and close methods

EncryptedSQLStore now has methods for opening and closing a la SQLStore.

Seriously, look at our JIRA

Miscellaneous extras

Travis-CI builds

All modules are build and tested in Travis-CI with each commit. This is still ongoing as android support in Travis is quite new.

Cookbook Demos

We’ve ported all of our demos to Android studio and added demos for Social media uploads, KeyCloak, and Android Wear.

You can checkout the code in GitHub

AGReddit

Ever wanted a Reddit browser meant to show of AeroGear’s support for paged data sources and authentication? Well here is your chance!

Chuck Norris Jokes with Wear support

Chuck Norris doesn’t need his wrists to tell you jokes. He has yours. And you will thank him.

Shoot and Share

Take a picture and put it on our favorite social media sites or your own private server secured by KeyCloak.

Feature demos

Auth, Store, and OAuth demos are still there as well.

What is next?

Sync

We’ve started working on a sync library to work with the aerogear-sync-server. This is scheduled to be the big new feature of 2.1. You can track our progress in our JIRA.

And as a sneak peek

More OAuth2

For 2.2 we are going to enhance our authorization suppport. We will include more OAuth2 providers, better KeyCloak support, better Android account integration, and support for custom authentication and authorization through intents in addition to our current WebView approach. Again, you can follow our Jira.

Involvement

Conclusion

Version 2.0 represents a huge cleanup and leap forward for the project. We hope that you will take some time to look at it and provide feedback. As always you can reach us via:

Posted in Blogroll

AJUG Tweets

Follow @atlantajug on twitter.

Recent Jobs

AJUG Meetup

Natural Language Processing in Java

April 21, 2015

In this presentation, I will talk about Natural Language Processing using Java. At Museaic, a music intelligence platform, we spent time figuring out how to extract central themes from song lyrics. In this talk, I will cover some of the tasks involved in natural language processing such as named entity recognition, word sense disambiguation and concept/theme extraction. I will also cover libraries available in java such as stanford-nlp, dbpedia-spotlight and graph approaches using WordNet and semantic databases. This talk would help people understand text processing beyond simple keyword approaches and provide them with some of the best techniques/libraries for it in the Java world.

Location:


Holiday Inn Atlanta-Perimeter/Dunwoody

4386 Chamblee Dunwoody Road,
Atlanta, GA (map)