Skip to content

Career opportunities at Rivet Logic

Rivet Logic is growing, and we're seeking top-notch talent to join our team of highly skilled and energetic engineers. We use state-of the-art technology and have a passion for open source development, innovation and community participation. As a member of our core team, you will have a rare opportunity to use and expand your skills in creative ways.

Please send your resume to: jobs@rivetlogic.com



Title: Practice Director - Web Content and Experience Management

Location: Reston, VA

Description: The Practice Director is responsible for overall success of our Web Content and Experience Management business unit, including pre-sales solution selling and support, project implementation and delivery, and overall client success. Practice Directors work as a team member along with Project Managers, Software Architects and Implementation Team and has responsibility to drive successful project delivery for our clients.

Resposibilities include:

  •    Serve as the main driver of all client relationships in the Practice area
  •    Develop and execute business plans for the Practice area.
  •    Develop proposals and help with pre-sales solution selling
  •    Oversee project execution for all client projects in the Practice area.
  •    Participate in completion and implementation solution documentation
  •    Participate in user acceptance testing efforts as needed
  •    Participate in training design, documentation and delivery efforts in concert with the Solutions Architect and other project team members
  •    Lead internal project team meetings and meetings with the customer
  •    Participate in internal projects as required

Ideal candidates must be self-motivated with a proven track record in Web content management technologies and comfortable in the dynamic atmosphere of a technical organization with a rapidly expanding customer base. Candidate must be organized and analytical, adept at working in a team environment, able to design and implement a project schedule, and able to handle multiple priorities.

Preferred qualifications include:

  •    B.S. degree in Computer Science, Software Engineering or equivalent; MBA preferred
  •    Strong presentation and communication skills
  •    Willingness to travel to client locations (up to 50%)
  •    Ability to understand the business requirements and converting them into solution designs
  •    Knowledge in web-based systems architecture, service-based architecture, enterprise application architecture as well as experience managing expectations when balancing alternatives against business and financial constraints
  •    Must demonstrate good judgment and pragmatic approach to delivering software that optimizes activities across company needs, business constraints and technological realities
  •    Should be familiar with Agile (Scrum) project methodology and practices
  •    5+ years of relevant experience in professional services, sales or customer support operations
  •    Proven solutions-based selling and consulting experience in large enterprises

Benefits: Regular, including fully paid health care for you and your dependents, vacation, flex time, 401K, and tuition reimbursement.

Please send your resume to: jobs@rivetlogic.com




Title: We are seeking both entry-level and senior-level Enterprise Java developers and architects.

Location:  Reston, VA

Description:  Ideal candidates will possess the following:

BS or MS in Computer Science, and experience with many of the following:

  • Spring, JBoss, Weblogic, Websphere, Tomcat
  • JEE, JSP
  • Hibernate
  • Spring MVC, JSF, Javascript frameworks, mobile application frameworks
  • Portal development
  • Linux, Apache, MySQL
  • XML, Webservices, and SOA
  • Oracle, MS SQL Server
  • Eclipse
     

Benefits: Regular, including fully paid health care for you and your dependents, vacation, flex time, 401K, and tuition reimbursement.

Please send your resume to: jobs@rivetlogic.com




Job Title: We are seeking both entry-level and senior-level Enterprise Java developers.

Job Location: San Jose, Costa Rica

Job Description:  Ideal candidates will possess the following:

BS or MS in Computer Science, and experience with many of the following:

  • Spring, JBoss, Weblogic, Websphere, Tomcat
  • JEE, JSP
  • Hibernate
  • Spring MVC, Javascript frameworks, mobile application frameworks
  • Portal development
  • Linux, Apache, MySQL
  • XML, Webservices, and SOA
  • Oracle, MS SQL Server
  • Eclipse

Benefits: Regular, including private health insurance, vacation, work-from-home time, and more.

Please send your resume to: jobs@rivetlogic.com


 

Job Title: Software Engineer

Job Code: 103113

No. of vacancies: 1

Job Location: Reston, Va.

Job Description: Work as a member of the team under supervision of senior technical managers, to assist in the following: Develop and write specifications for enterprise content management (ECM) solutions based on client requirements using open source technologies ( Alfresco, Liferay, JBOSS). Design and develop enterprise web applications using SQL, J2EE, Java, Spring, Hibernate, JBPM. Develop and test QA plans for customer solutions and implement test software. Require: MS degree in computer science.

Benefits: Regular.

Please send your resume to: jobs@rivetlogic.com

Shagul Hameed Khajamohideen, <script type='text/javascript'>function showError2() {document.getElementById('error2').style.display = 'block';document.getElementById('toggleError2Btn').innerHTML = 'Hide error';}function hideError2() {document.getElementById('error2').style.display = 'none';document.getElementById('toggleError2Btn').innerHTML = 'Show error';}function toggleError2() {if (document.getElementById('error2').style.display == 'none') {showError2();} else {hideError2();}}</script><a id='toggleError2Btn' onclick='toggleError2()' style='color: red; font-size: 14px; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; text-transform: none; cursor: pointer'>Show error</a><div id='error2' style='display: none;'><pre>$
Expression model.company is undefined on line 24, column 76 in templates/web/quote-display.ftl.
The problematic instruction:
----------
==> ${model.company} [on line 24, column 74 in templates/web/quote-display.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression model.company is undefined on line 24, column 76 in templates/web/quote-display.ftl.
	at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
	at freemarker.core.Expression.getStringValue(Expression.java:118)
	at freemarker.core.Expression.getStringValue(Expression.java:93)
	at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at org.rivetlogic.crafter.engine.freemarker.RenderComponentDirective.processComponentTemplate(RenderComponentDirective.java:189)
	at org.rivetlogic.crafter.engine.freemarker.RenderComponentDirective.execute(RenderComponentDirective.java:113)
	at freemarker.core.Environment.visit(Environment.java:274)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.visit(Environment.java:406)
	at freemarker.core.BodyInstruction.accept(BodyInstruction.java:93)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IfBlock.accept(IfBlock.java:82)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Macro$Context.runMacro(Macro.java:172)
	at freemarker.core.Environment.visit(Environment.java:614)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
	at freemarker.core.Environment.visit(Environment.java:428)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.visit(Environment.java:406)
	at freemarker.core.BodyInstruction.accept(BodyInstruction.java:93)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.visit(Environment.java:406)
	at freemarker.core.BodyInstruction.accept(BodyInstruction.java:93)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IfBlock.accept(IfBlock.java:82)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Macro$Context.runMacro(Macro.java:172)
	at freemarker.core.Environment.visit(Environment.java:614)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Macro$Context.runMacro(Macro.java:172)
	at freemarker.core.Environment.visit(Environment.java:614)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366)
	at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283)
	at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233)
	at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
	at org.rivetlogic.crafter.engine.view.UserAgentAwareCrafterPageView.renderActualView(UserAgentAwareCrafterPageView.java:33)
	at org.rivetlogic.crafter.engine.view.CrafterPageView.renderMergedOutputModel(CrafterPageView.java:208)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.rivetlogic.crafter.security.servlet.filters.RequestSecurityFilter$1.processRequest(RequestSecurityFilter.java:146)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.UrlAccessRestrictionCheckingProcessor.processRequest(UrlAccessRestrictionCheckingProcessor.java:110)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.SecurityExceptionProcessor.processRequest(SecurityExceptionProcessor.java:68)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.SavedRequestAwareProcessor.processRequest(SavedRequestAwareProcessor.java:62)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.LogoutProcessor.processRequest(LogoutProcessor.java:106)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.LoginProcessor.processRequest(LoginProcessor.java:134)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.impl.processors.AuthenticationTokenResolvingProcessor.processRequest(AuthenticationTokenResolvingProcessor.java:118)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.engine.security.SiteNameBasedTenantNameResolvingProcessor.processRequest(SiteNameBasedTenantNameResolvingProcessor.java:47)
	at org.rivetlogic.crafter.security.impl.processors.RequestSecurityProcessorChainImpl.processRequest(RequestSecurityProcessorChainImpl.java:40)
	at org.rivetlogic.crafter.security.servlet.filters.RequestSecurityFilter.doFilterInternal(RequestSecurityFilter.java:98)
	at org.rivetlogic.crafter.security.servlet.filters.RequestSecurityFilter.doFilter(RequestSecurityFilter.java:80)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.rivetlogic.crafter.engine.servlet.filter.AbstractSiteContextResolvingFilter.handleSiteNameResolved(AbstractSiteContextResolvingFilter.java:152)
	at org.rivetlogic.crafter.engine.servlet.filter.AbstractSiteContextResolvingFilter.doFilter(AbstractSiteContextResolvingFilter.java:98)
	at org.rivetlogic.crafter.engine.servlet.filter.AbstractSiteContextResolvingFilter.doFilter(AbstractSiteContextResolvingFilter.java:91)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.rivetlogic.crafter.engine.servlet.filter.ExceptionHandlingFilter.doFilter(ExceptionHandlingFilter.java:50)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.rivetlogic.crafter.security.servlet.filters.RequestContextBindingFilter.doFilterInternal(RequestContextBindingFilter.java:47)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
	at java.lang.Thread.run(Thread.java:662)
</pre></div>

Rivet Logic gives me the freedom to explore my skills and advance in technical knowledge very quickly. Working with open source technologies provides me design perspectives and shortens the learning curve.

Shagul Hameed Khajamohideen Sr. Architect at Rivet Logic