Wednesday, July 24, 2013

maxaim softech solutions educating rural students at KKSSS camp

maxaim softech solutions joins the hands with the Kanya Kumari Social Service Society (KKSSS), Kalluvilai for a rural education program conducted at Orunooraamvaail.





Its a evening tuition centre setup by KKSSS and maxaim faculties work together to build up the knowledge of young students in Computer Applications and Internet Services.








Mr. Dinold Jeeva, Software Engineer at maxaim softech solutions is coordinating the work there at Orunooraamvaail.

Monday, July 22, 2013

How To Improve Programming Skills



Practice

    Write lots of programs, especially big programs. A lot of good practices become obvious once you've made the typical mistakes.
    Writing small programs lets you write more programs in the same amount of time; this will improve some of your programming skills much more rapidly, but others not at all.
    Modify existing programs written by other people. Reading code without having previous knowledge of it is a valuable skill - you can't debug without it --- and you don't get much practice with it when you're writing programs from scratch by yourself. If you reflect on what you've found hard to understand, it can also help you learn how to write maintainable code. Also, this lets you work on many more big programs than you would have time to write yourself from scratch, which helps a lot with those skills that only apply to large programs.
    But... CodeLessTestMore.

Refactor
    Learn about Refactoring.
    Spend a lot of time Refactoring and improving programs, even if they work fine.

Design
    Learn about Software Design Patterns!

Code Review
    Find some good mentors and let them review your code, and try to do some PairProgramming with them.
    Find some peers with whom you can review your code. People of similar skill levels can teach each other a lot. And this gets around problems with sharing your "bad code" with a senior person who might give you a harsher critique than you want (not to mention a bad performance review).

Learn from good programmers
    Read Great Programs.
    Adapt some good code (I learned a lot about C idioms while adapting a Btree Index library in order to add compound key index feature).
    Team with good programmers. Sit at their knees and learn. Emulate their habits. Do not insist they adopt your practices/tools/habits because you think you know a better/faster/cheaper way.

Broaden your horizon
    Learn multiple programming languages. Each language you learn will give you ideas about how to do things better in other languages. (The worst programmers I know are the ones who think that language X is the only one they need to know.) See Learning Programming Languages for related tips.
    Learn different kinds of programming languages: procedural, functional, Object Oriented, etc. See Ground Breaking Languages.
    Learn multiple operating systems. Learn to write portable code.

Read
    Read books about code quality, like Code Complete. It can save you a lot of time.
    Buy the book The Pragmatic Programmer and read it, learn it, live it.
    Generally, read Great Software Books
    Read books about other subjects. Philosophy, history, art... anything. Become a broader person. It doesn't directly affect your programming as such, but it widens the mind, which has to be a good thing.

Learn the Problem Domain
    Get into the habit of understanding the problem domain. Try to create a Mind Map for the problem. Spend good amount of time learning about it. A good knowledge of the problem domain goes a long way in creating good code.
    Work closely with end users. Get their honest opinions about the software you make. It doesn't matter how many algorithms or data structures you know if you aren't making someone's life better.
    And on a similar note: learn from your users. Try to understand where they're coming from. If you learn the problem domain, their requirements make more sense and you get closer to being able to give them results that will do what they wanted, not what they asked for.

Reflect
    If somebody complains that they don't understand your code, find out what it is they don't understand. ("That guy is an idiot" is generally not the reason.)
    Every time you fix a bug, think about how you could have avoided the error in the first place, and what could help you avoiding it next time. Some of the answers lie in GoodCode quality principles, and others in good programming practices.
    By the way, just stop thinking that bugs come to life just from disruption or fatigue. Bugs proliferate in poorly written code. (But do remember that rest and concentration are requirements for doing good work)
    Learn to quit habits and to adopt new habits.
    Take a break. It's hard to do any of these things when you're already coding all week, as fast as you can.

Monday, July 15, 2013

maxaim (version 1.8.0; Java SE 8) released - Unknown Facts

Versions of Java (The Legend)


Unlike C and C++, Java's growth is pretty recent. Here, we'd quickly go through the development paths that Java took with age.

Development of Java over the years. From version 1.0 to version 1.7, Java has displayed a steady growth.

Initial Release (versions 1.0 and 1.1)


Introduced in 1996 for the Solaris, Windows, Mac OS Classic and Linux, Java was initially released as the Java Development Kit 1.0 (JDK 1.0). This included the Java runtime (the virtual machine and the class libraries), and the development tools (e.g., the Java compiler). Later, Sun also provided a runtime-only package, called the Java Runtime Environment (JRE). The first name stuck, however, so usually people refer to a particular version of Java by its JDK version (e.g., JDK 1.0).

Java 2 (version 1.2)


Introduced in 1998 as a quick fix to the former versions, version 1.2 was the start of a new beginning for Java. The JDKs of version 1.2 and later versions are often called Java 2 as well. For example, the official name of JDK 1.4 is The Java(TM) 2 Platform, Standard Edition version 1.4.

Major changes include:
  • Rewrite the event handling (add Event Listeners)
  • Change Thread synchronizations
  • Introduction of the JIT-Just in time compilers

Kestrel (Java 1.3)


Released in 8 May 2000. The most notable changes were:

  • HotSpot JVM included (the HotSpot JVM was first released in April, 1999 for the J2SE 1.2 JVM)
  • RMI was modified to support optional compatibility with CORBA
  • JavaSound
  • Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension)
  • Java Platform Debugger Architecture (JPDA)
  • Synthetic proxy classes

Merlin (Java 1.4)


Released in 6 February 2002, Java 1.4 has improved programmer productivity by expanding language features and available APIs:

  • Assertion
  • Regular Expression
  • XML processing
  • Cryptography and Secure Socket Layer (SSL)
  • Non-blocking I/O (NIO)
  • Logging

Tiger (version 1.5.0; Java SE 5)


Released in September 2004

Major changes include:
  • Generics - Provides compile-time type safety for collections :and eliminates the drudgery of casting.
  • Autoboxing/unboxing - Eliminates the drudgery of manual conversion between primitive types (such as int) and wrapper types (such as Integer).
  • Enhanced for - Shorten the for loop with Collections use.
  • Static imports - Lets you import all the static part of a class.
  • Annotation/Metadata - Enabling tools to generate code and deployment descriptors from annotations in the source code. This leads to a "declarative" programming style where the programmer says what should be done and tools emit the code to do it. Annotations can be inspected through source parsing or by using the additional reflection APIs added in Java 5.
  • JVM Improvements - Most of the run time library is now mapped into memory as a memory image, as opposed to being loaded from a series of class files. Large portion of the runtime libraries will now be shared among multiple JVM instances.

Mustang (version 1.6.0; Java SE 6)


Released on 11 December 2006.

What's New in Java SE 6:

  • Web Services - First-class support for writing XML web service client applications.

  • Scripting - You can now mix in JavaScript technology source code, useful for prototyping. Also useful when you have teams with a variety of skill sets. More advanced developers can plug in their own scripting engines and mix their favorite scripting language in with Java code as they see fit.

  • Database - No more need to find and configure your own JDBC database when developing a database application. Developers will also get the updated JDBC 4.0, a well-used API with many important improvements, such as special support for XML as an SQL datatype and better integration of Binary Large OBjects (BLOBs) and Character Large OBjects (CLOBs) into the APIs.

  • More Desktop APIs - GUI developers get a large number of new tricks to play like the ever popular yet newly incorporated SwingWorker utility to help you with threading in GUI apps, JTable sorting and filtering, and a new facility for quick splash screens to quiet impatient users.

  • Monitoring and Management - The really big deal here is that you don't need to do anything special to the startup to be able to attach on demand with any of the monitoring and management tools in the Java SE platform.

  • Compiler Access - Really aimed at people who create tools for Java development and for frameworks like JavaServer Pages (JSP) or Personal Home Page construction kit (PHP) engines that need to generate a bunch of classes on demand, the compiler API opens up programmatic access to javac for in-process compilation of dynamically generated Java code. The compiler API is not directly intended for the everyday developer, but for those of you deafened by your screaming inner geek, roll up your sleeves and give it a try. And the rest of us will happily benefit from the tools and the improved Java frameworks that use this.

  • Pluggable Annotations allows programmer to write annotation processor so that it can analyse your code semantically before javac compiles. For example, you could write an annotation processor that verifies whether your program obeys naming conventions.

  • Desktop Deployment - At long last, Java SE 6 unifies the Java Plug-in technology and Java WebStart engines, which just makes sense. Installation of the Java WebStart application got a much needed makeover.

  • Security - Java SE 6 has simplified the job of its security administrators by providing various new ways to access platform-native security services, such as native Public Key Infrastructure (PKI) and cryptographic services on Microsoft Windows for secure authentication and communication, Java Generic Security Services (Java GSS) and Kerberos services for authentication, and access to LDAP servers for authenticating users.

  • The -lities: Quality, Compatibility, Stability - Bug fixes ...

Dolphin (version 1.7.0; Java SE 7)


Released on 28 July 2011.

Feature additions for Java 7 include:

  • JVM support for dynamic languages, following the prototyping work currently done on the Multi Language Virtual Machine
  • Compressed 64-bit pointers Available in Java 6 with -XX:+UseCompressedOops
  • Small language changes (grouped under a project named Coin):

  • Strings in switch
  • Automatic resource management in try-statement
  • Improved type inference for generic instance creation
  • Simplified varargs method declaration
  • Binary integer literals
  • Allowing underscores in numeric literals
  • Catching multiple exception types and rethrowing exceptions with improved type checking

  • Concurrency utilities under JSR 166
  • New file I/O library to enhance platform independence and add support for metadata and symbolic links. The new packages are java.nio.file and java.nio.file.attribute
  • Library-level support for Elliptic curve cryptography algorithms
  • An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
  • New platform APIs for the graphics features originally planned for release in Java version 6u10
  • Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
  • Upstream updates to XML and Unicode

Lambda (Java's implementation of lambda functions), Jigsaw (Java's implementation of modules), and part of Coin were dropped from Java 7. Java 8 will be released with the remaining features in summer 2013.

and now it is...

maxaim (version 1.8.0; Java SE 8)

Released on 15 July 2013. (hi! its a simple joke...)

Sunday, July 14, 2013

How to Become a Software Engineer

Software Engineering was recently listed by Time Magazine as still being the #1 career for pay/stress load. In spite of all the media hype about offshoring of these type of jobs, it's still a job that's in high demand. This article is for those considering Software Engineering as a career path.

Steps:

School Level

You must love programming! If you're in junior or senior high, and you haven't yet explored programming, do so. If you're not interested in math or science to begin with, you should probably explore other options.

Get all the math you can in high school like algebra, calculus, and geometry, it might be worth it if you try trigonometry and graphing. Try to advance to college level math before leaving high school, you'll need a ton of math to complete any Computer Science program and Engineering program.

College Level

Plan on getting a degree. With all the success stories of college drop outs becoming billionaire CEOs in the 90's, there is a certain lure that "as long as I think outside the box and have outstanding problem solving and programming skills I don't need a four year degree". It's difficult for entry level software engineers to obtain a position without a four year degree.

Qualify your degree by what you want to do. If your love is game design and you wish to enter that industry as a game programmer, you'll need a Computer Science degree. If you want to work for IBM, Intel, Microsoft, Google, etc., then a Computer Science degree may be good for you. If you're looking to work for a non-technical corporation building mostly business applications, consider a degree in Management Information Systems or one of the many business technical degrees now offered. This type of degree is best for most, because it provides management and general business skills and doesn't focus on a lot of information that will not be useful to most.

Extra College Curriculum

Supplement your classwork with personal research. Search job boards and note what technologies are hot and buzzing. The colleges simply can't keep up with everything, so you'll need to buy additional technical books and teach yourself.

Unless you're planning to get your foot in the door through an intern position, try to find side projects while in school. No one wants to take a risk and hire someone fresh out of school without projects under their belt. Internships are great at taking care of this problem, but unfortunately a lot of students can't land an internship or do so only to discover they would prefer to work elsewhere. The only way to give yourself options is to find some non-classroom work to put on your resume.

Develop contacts with software engineers. If possible try to connect with software developers and work on some projects under their guidance.

Understand that software engineering is not the same as programming. Every software engineer knows how to program, but not every programmer is a software engineer. Here's the principal difference between the two:
    Software engineering is typically a group effort, with differing and often fluid roles and responsibilities for the group members.
    Engineering projects have timelines, release dates, and considerable interaction between people responsible for various components.


Extra Activities

Always do some extra activities apart from studies and related to any software that has some real time solution of any problem. Whenever you have free time spend it searching on the internet about new technologies in the market and also watch for the technologies that will be useful in the future.

After studying about all the fields related to Computer Science, choose a particular direction in Software Industry. Narrowing your choice down will help considerably in planning your career. Always think simple because the Software Industry itself is very complex.