sipXconfig
Wednesday, January 25, 2006
 
Job openings at Pingtel

Senior / Principal Software Engineer
(SIP Stack/Proxy Development)

Pingtel is looking for a senior/principal software engineer to join
an energetic and talented team to participate in exciting open-source
SIP communications servers (sipXproxy, sipXpublisher, sipXregistrar,
etc.) and presence server development projects. These servers
form the core of a SIP message routing and service infrastructure, and
are combined in a variety of ways to produce a number of different products.


Qualifications:

  • BSCS/CE/EE minimum
  • At least 7 years of commercial
    software development experience
  • SIP, Datacom / Telecom development
    experience
  • Solid Linux C/C++ development
    experience
  • Experience in building and
    maintaining complex multi-threaded software
  • Excellent software engineering
    skills, including object oriented analysis and design
  • Able to investigate and recommend
    technical solutions to complex problems with little direction
  • Excellent written and verbal
    communication skills
  • Self-motivated, excellent
    teamwork skills, and takes responsibility and ownership of development
    areas

In addition, experience with any of the
following is highly desirable:

  • Experience with SIP stack
    and proxy implementation
  • Experience with implementation
    and deployment of IM and Presence protocols
  • Experience with XML tools
    and technologies, especially XML Schema and validating parsers
  • Familiarity with autotools
    and open source methodologies and conventions


Senior / Principal Software Engineer
(SIP-Based Application Development)


Pingtel is looking for a senior/principal software engineer to join
an energetic and talented team to participate in exciting open-source
SIP-based application development projects. The current SIP-based
applications include a SIP-based media server for voice mail, auto-attendant,
and IVR; a SIP-based ACD server; and a SIP-based Conference Server.
More exciting projects are being planned. This individual will
participate in the design and development of all existing and future
applications.

Qualifications:

  • BSCS/CE/EE minimum with at
    least 7 years of software development experience.
  • Solid Linux C/C++ development
    experience.
  • Excellent software engineering
    skills, including object oriented analysis and design.
  • Self-motivated, excellent
    teamwork skills, and takes responsibility and ownership of development
    areas.
  • Experience in building and
    maintaining complex multi-threaded software.
  • Knowledge of network socket
    level programming and operating system primitives.
  • Able to investigate and recommend
    technical solutions to complex problems with little direction.
  • Excellent written and verbal
    communication skills.

In addition, experience with any of the
following is desirable:

  • Telecom experience, preferably
    in one or more Voice-over-IP technologies (SIP, H.323, RTP, MGCP, or
    Megaco).
  • TTS, or voice recognition.
  • Software-based audio processing
  • ACD, Call center applications
  • Conference bridge

Tuesday, January 03, 2006
 
A New Hope (i.e. maven2)
Our build system is getting more and more complicated. It seems that we
achieved quite a lot by now:
- full unit test integration
- database and web unit tests
- checkstyle and clover (test coverage) integration
- support for Eclipse

I feel good about how easy it is build sipXconfig now (building sipX is a different story altogether). Quick and dirty start on wiki even let's you do it on without compiling the rest of sipX family. And even on the system without autoconf toolset (i.e. Windows)

There are things that are difficult still. Our Ant build scripts are a bit too complicated. You have to search for places to add new jars. It is easy to forget it in one place which usually results in problems after installation. Adding new modules is not as easy as it could be. We are slowly outgrowing neoconf/web structure but no-one seem to have the stomach to rip it apart. The dependencies are on the verge of being too difficult to manage.

However I have a feeling that we can do better and the more I look at Maven2 the more I think that this may be the way to go.

The big win is standardization. Sure you can run ant -p to find out what tasks are defined in the project but I suppose that few people will guess that ant precommit is what we usually run before svn ci, or that the ant run command has to be executed from web project to start jetty. Switching to maven would take care of these.

If a new tool that I want to use appears I want to use this tool and not figure out how to seamlessly add it to build system. And with maven there is a chance that if tool is useful there is a plugin to support it.

There are challenges of course:
- we use slightly different directory structure that the one suggested by maven - I am sure that there is a way to express it in pom somehow but I'd rather switch to standard
- we still need to place nice with make and autotools - sipXconfig is very often build as a part of entire sipX project and we do not want C/C++ developers to worry their pretty heads about our sophisticated and powerful build tools - let them stay in 20 century for couple of more years
- we would have to find out how big of a dependency problem we are introducing for various Linux platforms: of course java is a big problem already but that's hardly an excuse to make things even worse - the good thing is that we could just distribute maven and let it download all dependencies: a big plus for people who want to look at the source but not necessarily build everything - out LIB directory is probable >= 10MB and growing

Anyway - I'll keep trying. Watch this space for more updates.


Powered by Blogger