Tag Archives: programming

Outsource IPad Apps Development – Take Benefits From it

Right after iPhone smartphone gadget, Apple has appear with its product iPad, which has improved the customer knowledge of web, enjoying to play games, viewing video on tablet, enjoying to listen music and many more etc. Apple is outfitted with some outstanding functions that will absolutely create the procedure of making whatever on iPad a great deal of enjoyment. This ever improving reputation of iPad has also because the improving need for iPad apps for numerous market and as a result it gradually the requirement of highly qualified ipad application developer expert to create powerful iPad apps.

In an effort to make use of all benefits of the iPad functions, you require having excellent and powerful apps and therefore it requires hire expert and qualified iPad app programmer to accomplish this. You should usually choose hiring an application programmer who is expert only in iPad apps development simply because they can use their skills and experience in creating your apps suitable your demands.

You should construct complete analysis just before selecting your iPad programmer because if you select the incorrect organization or personal then it possibly to losing your valuable time, attempt and most of all your cash. The ideal solution is to hire from an expert outsource ipad development organization as they can offer you with the needed encounter and sources to deal with any type of application concept regardless of its duration and complication. An additional benefit you can acquire from this outsourcing organization is that you have the choice of deciding on the best programmer from their organization and you can often modify if you do not obtain their task based to your requirements.

Advantages that you can acquire if you hire iPad application programmer

+ You will obtain a devoted iPad application programmer
+ Highly Knowledgeable programmers are creating powerful and unique iPad apps. 3. Main Advantages is that these types of outsourcing iPad apps development company provides 24X7 Client Support
+ You will be touch with your iPad developer via cell phone, message chatting and or also through email

Other aspect which creates outsourcing iPad apps development a massive achievement is its stability and believe in. These two key elements of any business deal can effortlessly be marked in an expert iPad apps development organization that can provide you in the ideal of concern. Thus, outsource you application concept to obtain the highest possible advantages of these outsourcing organizations.

Source: http://iphoneappdevelopment.over-blog.com/article-outsource-ipad-apps-development-take-benefits-from-it-110411620.html

Did you like this? Share it:

What today’s software developers need to know

Today’s software developers don’t have to worry about many things that their predecessors used to, like coding to minimise RAM consumption even if it means significantly longer execution time, or WAN connections maxing out at 14.4 kilobits per second (although, there may be some  out-of-fashion skills they could benefit from or that may yet regain relevance).

However, the reverse is also true: there are many new skills and areas of expertise that today’s software developers, hardware developers, system and network administrators and other IT professionals need that simply didn’t exist in the past (where "the past" could be anything from "more than three months ago" to five, ten, twenty or more years), or were only relevant for organisations and applications with immense budgets.

The list of what you need today that you didn’t need before depends on how long ago you went to school, how hard you’ve worked to keep up on technology, the software industry, and software engineering," says David Intersimone, Vice President of Developer Relations and Chief Evangelist for Embarcadero Technologies.

Knowing what you need to know matters, whether you’re just starting out as a software developer (or planning to become one), or are a "seasoned" professional who wants to keep your chops fresh so you can stay in, re-enter, or advance.

So here, as a counterpoint to my "lost skills" article, are "found skills" – what a number of IT professionals see as these new areas for software developers that you want add to your existing knowledge portfolio. (Disclaimer: For the most part, I’ve left out suggestions about specific programming languages, as too obvious.)

Using libraries

"One thing that strikes me as a new skill is the need to work with massive pre-packaged class libraries and template libraries in all the new languages, like Java or C++ or Python," says consultant and software developer Jeff Kenton. "It used to be that once you knew the language and a small set of system calls and string or math library calls, you were set to program. Now you can write complex applications by stringing library calls together and a little bit of glue to hold them all together. If you only know the language, you’re not ready to produce anything."

iPhone app developer Hwee-Boon Yar, who has been writing and selling software for 10 years, says "More programming resources are now available online freely. Knowing where to look, such as stackoverflow.com, as well as what habits are good to adopt in the long run is important. For example, if you become someone who Googles for a solution to a programming problem and copy and paste every time, you will never advance your skills."

Factoring in your users

Meredith Anderson, a business and information architect, adds, "In 2008, discipline keywords like ‘information architecture’ and ‘usability engineering’ were scarce in online job postings. In 2010 there were numerous job postings with these keywords. I’m not sure whether the market acknowledged the need and existing skills, or whether the need coalesced around these words to find the skills.

"In any case, the skill set of user experience engineering – usability engineering, user interface design, and information architecture (all distinct from graphic design) – has become a formal area of expertise, described by a specific vocabulary. And in the last couple of years demand for these skills has exploded."

Merryl Gross, a UI Architect in the healthcare information technology area, says, "While knowing your technology is critical, knowledge of the people who use their software, how they use it, and what’s important to them about the software is critical these days, when people expect more from their devices. This will keep you from making a lot of expensive mistakes.

"And where you don’t already have this knowledge, assuming you will be spending some of your planning time understanding why your target users like or want the things they want — and knowing how to do this information gathering and assessment."

Asynchronous programming and other techniques

"Because of the move to cloud computing mostly through web-based interfaces, we are seeing an emphasis on asynchronous programming," says Itai Danan, founder of Cybernium a software development and web design consulting company. "Ten years ago, this was mostly used by transactional systems such as banks, hotels and airline reservations. Today, all but the simplest applications require asynchronous programming, mostly because of AJAX. This is a very different style of programming — most things taught about software optimizations do not apply across the network boundary."

Brian Fino, managing director, Fino Consulting, an IT consulting firm that specializes in developing enterprise, cloud and mobile applications for the modern business environment, stresses the need to understand the impact of distributed, networked infrastructures, multi-core hardware, etc.

"Cheap and readily available infrastructure has made most all applications multi-dimensional and distributed," says Fino. "Software engineers have to have a good understanding of how distributed systems work from the functional right down to the packets on the wire and how they’re routed."

Also, says Fino, understand multi-threaded design: "Hardware today is multi-core; software engineers have to understand how to design software that can take advantage of the hardware capabilities readily available today."

A breadth of skills

"It’s become more important to have a breadth of skills" says Ben Curren, CoFounder, Outright.com, which offers easy-to-use online accounting and bookkeeping software for small businesses. "For example, web developers these days need to understand customers, usability, HTML, CSS, Javascript, APIs, server-side frame works, and testing/QA."

"Programmers don’t learn that someone else is going to take care of the code they write," criticizes Sarah Baker, Director of Operations at an Internet media company. "They don’t learn about release management, risk assessment of deploy of their code in a infrastructure, or failure analysis of their code in the production environment — everything that happens after they write the code. They don’t learn that a log is a communication to a operations person, and it should help an operations person determine what to do when they read that log."

Craig Schwartz, Senior Engagement Manager at Freeborders, a global IT services provider, sees three core skills being in demand: mobile development, global delivery and agile development experience. "With the growth in mobile computing, the ability to create Web applications designed to work on mobile devices, Rich Internet Applications (RIAs) for the mobile market and applications that run directly on mobile devices (Android and iOS) will be a necessary skill for developers as this market grows."

Jane Gilligan Hamner, VP Business Development, Harvey Nash USA, an executive search, professional recruitment and IT outsourcing firm, reports, "In the Chicago market we are finding that clients are requesting more client-rich application experience, such as Windows Presentation Foundation (WPF) with ASP.NET, and Ajax programming like jQuery and the DOJO Javascript tools.

It isn’t just about what you already know, either. It’s also about continuing to add to your knowledge and skill sets, comments Amy Wilson, Client Services Manager at web and mobile app design firm Accella. "With the ever changing face of technology, and the skills necessary to keep up with new software/hardware, programmers and developers have to be much more flexible in today’s marketplace. Learning ONE language or skill won’t cut it in today’s workplace. Being flexible and staying up to date on new software releases is key to being a truly successful resource."

Domain expertise for new jobs

Many new jobs call for "domain" (subject matter) expertise in addition to software chops.

Mary-Anne Wolf, who is a senior software engineer, project technical lead and architect, sent me a list of four-score-plus skills and job foci; here’s some selections:

  • Speech recognition-based non-visual user interface designer
  • Software designer for large-screen mobile devices with no hard disk
  • Designer of location-responsive and orientation-responsive applications
  • Specialist in software for oil and natural gas exploration and geology
  • Specialist in the design of medical devices which are embedded in the human body.

Bruce Douglass, Chief Evangelist, IBM Rational Software, suggests several areas of domain expertise, including:

  • Electric vehicle mechanics: "As automakers upgrade the features in electric, so will the amount of software code in each vehicle. Software engineers with knowledge and fundamentals on electric vehicles will be in better position to create complex battery systems, electric drive units and cabin electronics."
  • Environmental engineering: "The green movement will remain a hot button issue for future engineers. Finding new ways to improve the environment, provide healthy water, air, and land for human habitation, and to remediate polluted sites are all important areas of expertise for software engineers."
Agile and collaborative development methods

"Today’s developers need to have awareness of more agile software development processes," says Jeff Langr, owner, Langr Software Solutions, a software consultancy and training firm. "Many modern teams have learned to incrementally build and deliver high-quality software in a highly collaborative fashion, to continually changing business needs. This ability to adapt and deliver frequently can result in significant competitive advantage in the marketplace.

"In order to deal with continual demands for change coming from the business, and sustain reasonable maintenance costs on their systems, today’s developers need to understand how to incrementally grow their systems using appropriate quality technical practices," says Langr. "Some of these practices are: test-driven development (TDD), automated acceptance testing, refactoring, continuous integration, and continuous delivery."

Developing for deployability, scalability, manageability

"Sysadmins are likely to own the software for much longer than the developers – what are you doing to make their stewardship pleasant enough that they look forward to your next deployment?" asks Luke Kanies, Founder and CEO of Puppet Labs: "This includes deployability and manageability. New technologies are often much more difficult to deploy on existing infrastructure because developers haven’t had time to solve problems like packaging, running on your slightly older production OS, or connecting to the various services you have to use in production."

Also, says Kanies, manageability matters, "The most important part of an application’s lifetime is when it’s running in production, yet developers don’t spend nearly enough time thinking about how to maintain the application while it runs. For example, is there debugging or performance instrumentation? If it’s running slowly, can you tell why? If there are failures, can you trace the failure without the service being down? Can you hide failures from the user but still pass the debugging information on to the sysadmin and developers? Can you tune the application, or deploy more copies, without bringing it down?"

And, finally, some short sundries

Walter Gillett, a developer at software consultancy Twenty Geese Software, suggests:

  • Distributed computing technologies like Hadoop for seriously scalable cloud computing
  • "Big data" – analytical capabilities to deal with the flood of web and scientific data, e.g., clickstreams from a gazillion users of a large-scale web site.
  • Web application frameworks, e.g., Ruby on Rails, Grails, for high productivity.
  • Dynamic "scripting languages" that emphasize developer productivity over run-time performance, such as Python, Ruby, PERL, JavaScript, and Groovy (an alternative to Java).

Senior software engineer Amy Unruh adds, "it is useful for today’s developers to understand issues in realtime search, and techniques for pipelining data analysis and for managing ‘activity streams.’ And you should able to exploit the ‘small pieces loosely joined’ model, including use of microformats, and understand how to consume APIs from other services and support relevant APIs for your service, by building on RESTful computing principles."

What new skills have you found you’ve had to learn – or are planning on learning?

source: http://www.computerworlduk.com/advice/applications/3304124/what-todays-software-developers-need-to-know/

Did you like this? Share it:

Google Fiber Project: Programming Key to Success

Google has officially rolled out its long-touted Google Fiber Project showcasing what broadband should look and feel like to all users. Yes, it sets the new standard for broadband connections with a 1Gig speedster, over 100 times faster than current broadband offerings in the U.S. Not-withstanding, just speed will not be the determining success factor; the availability of competitive programming will become the deciding judgment in Google’s move to tout reasonable costs to bundled broadband.

Programming Rights Historically Elusive

Obtaining rights to mainstream content producers is the key to a Google Fiber success. Without the likes of HBO, The Discovery Channel and other must-have content for any TV package, the prospects dim for any competitor trying to enter the broadband-cable bundles which dominate the market. Time Warner Cable will be watching closely as Google moves forward to secure rights and compete head-to-head in Kansas City. Just broadband alone, using Netflix, YouTube and others to compete is not enough. Historically, incumbent service providers have been able to lock-down competitors in any semblance of affordable programming from top content producers.

"Fiber’s biggest problem is that it needs backing from the big players, says Marguerite Reardon at CNET. The Discovery Channel, CNBC, AMC, TNT, Comedy Central, ESPN, CNN, and HBO are all glaringly absent. And Google may have a hard time convincing the owners of those channels — like Disney (ESPN, HBO) and Time Warner (TNT) — to climb onboard." From (Can Google conquer Cable TV?)

Google needs economies of scale going forward. That means it must target additional cities for Google Fiber, and quickly, in demonstrating to programmers it has staying power to compete effectively. Otherwise, programmers will shy away from any substantial deal with a new entrant. This entails having deep pockets and a willingness to compete for the long-haul.

By-Passing Hardware Vendors

Google Fiber seems intent on holding costs down by combining its own research and hardware. Project engineers have taken research from related Google hardware molding new hardware into low-cost products. The devices include a cable box, and hand-held device all seem to come from Google resources, like Google TV, Nexus 7 Tablet. New devices created include a stackable storage and network box. All these components add up to a quick and nimble broadband and TV package available for $120.00 per month. Boxes for additional TV’s are separate from this package. Learning from those going before it, Google is forging a seemingly level-headed approach to combine resources in the venture, thereby keeping the $500 million price tag in check.

Potential Customers Must Show Interest

Kansas City’s potential customers must register online for the project by paying a $10.00 fee, and their neighbor’s must do the same to get in line for initial installation of Google Fiber. This pre-qualifying aspect is the marketing component which Google foresees as a must-have in moving forward with actual deployment. If the interest is not concentrated enough within neighborhoods, roll-out will be delayed until enough interests warrant the cost of installation. This could save tons of money on the front end with less truck-roll for individual installations.

Residents can either pay a $300.00 fee or sign up to an initial package like broadband and TV or just broadband to waive that fee. There will be a 2 year contract for packages. Signing up for free broadband is also available, but does not include the 1Gig version, only a standard speeds. Google is playing it smart, at least on the front end of their historic project, using milestones to move from one level to the next in roll out. If insufficient interest by neighborhood does not materialize, those neighborhoods will have to wait for the fastest broadband available.

Conclusion

While these factors; using in-house hardware, and qualifying potential customers will save money on the front-end, as stated, the determining factor will be competitive programming acquisition. It is worth watching to see how Google handles entrenched competitive forces with what many think is an innovative project at its best. But the Internet giant must not only navigate a competitive environment, it also must offer the best product on the market. That will ensure success over the long-haul, which means, pouring money into build-outs, programming, and marketing costs for a multi-year investment.

source:

http://www.circleid.com/posts/

0120805_google_fiber_project_programming_key_to_success/

Did you like this? Share it:

iOS Development Makes Objective-C The Third Most Common Programming Language

According to a recent study, iPhone and iPad app development has a bigger learning than curve than any other mobile platform. It also costs developers more in terms of time and expenses to develop an iOS app than to create an Android, BlackBerry, or Windows Phone app.

Despite those challenges, iOS has boosted the popularity of Objective-C, the programming language used by Apple for both Mac and iOS development – making it the third most popular language with developers.

Given that the same study that listed iOS as the most costly platform for developers also noted that it offered the most financial reward, it’s easy to see why developers might opt for iOS development and Objective-C over some of the other platforms and programming languages out there.

According to the TIOBE Programming Community Index for July 2012, Objective-C beat out C++ for the number three spot. It comes in behind C and Java, which garnered the top two spots with 18.331% and 16.087% of developers using them respectively.

Both C and Java are much more commonly used across a range of platforms and developer environments that either Objective-C or C++, which have been neck and neck for the number three spot for quite some time. In July’s index, Objective-C garnered a respectable 9.335% to take the lead while C++ came in just slightly behind with 9.118% of developers actively using it.

The remaining programming languages making up the top ten list include a number of web-related languages.

  • C 18.331%
  • Java 16.087%
  • Objective-C 9.335%
  • C++ 9.118%
  • C# 6.668%
  • Visual Basic 5.695%
  • PHP 5.012%
  • Python 4.000%
  • Perl 2.053%
  • Ruby 1.768%

source:http://www.cultofmac.com/177668/ios-development-makes-objective-c-the-third-most-common-programming-language/

Did you like this? Share it:

Software Outsourcing: 7 Programming Myths: Busted

7 Programming Myths: Busted!

Even among people as logical and rational as software developers, you should never underestimate the power of myth. Some programmers will believe what they choose to believe against all better judgment.

The classic example is the popular fallacy that you can speed up a software project by adding more developers. Frederick P. Brooks debunked this theory in 1975, in his now-seminal book of essays, "The Mythical Man-Month."

Brooks’ central premise was that adding more developers to a late software project won’t make it go faster. On the contrary, they’ll delay it further. If this is true, he argued, much of the other conventional wisdom about software project management was actually wrong.

Some of Brooks’ examples seem obsolete today, but his premise is still sound. He makes his point cogently and convincingly. Unfortunately, too few developers seem to have taken it to heart. More than 35 years later, mythical thinking still abounds among programmers. We keep making the same mistakes.

The real shame is that, in many cases, our elders pointed out our errors years ago, if only we would pay attention. Here are just a few examples of modern-day programming myths, many of which are actually new takes on age-old fallacies.

Programming myth No. 1: Offshoring produces software faster and cheaper

These days, no one in their right mind thinks of launching a major software project without an offshoring strategy. All of the big software vendors do it. Silicon Valley venture capitalists insist on it. It’s a no-brainer — or so the service providers would have you believe.

It sounds logical. By off-loading coding work to developing economies, software firms can hire more programmers for less. That means they can finish their projects in less time and with smaller budgets.

But hold on! This is a classic example of the Mythical Man-Month fallacy. We know that throwing more bodies at a software project won’t help it ship sooner or cost less — quite the opposite. Going overseas only makes matters worse.

According to Brooks, "Adding people to a software project increases the total effort necessary in three ways: the work and disruption of repartitioning itself, training new people, and added intercommunication."

Let’s assume that the effort required for repartitioning and training is the same for outsourced projects as for homegrown ones (a dangerous assumption). The communication effort required for outsourcing is much higher. Language, culture, and time-zone differences add overhead. Worse, offshore development teams are often prone to high turnover rates, so communication rarely improves over time.

Little wonder there’s no shortage of offshoring horror stories. Outsourcers who promise more than they deliver are a recurring theme. When deadlines slip and clients are forced to finish the work in-house, any putative cost savings disappear.

Offshoring isn’t magic. In fact, it’s hard to get right. If an outsourcer promises to solve all of your problems for nothing, maintain a healthy skepticism. That free lunch could end up costing more than you bargained for.

Programming myth No. 2: Good coders work long hours

We all know the stereotype. In popular culture, programmers stay up late into the night, coding. Pizza boxes and energy-drink cans litter their desks. They work weekends; indeed, they seldom go home.

There’s some truth to this caricature. In a recent analysis of National Health Interview Survey data, programming tied for the fifth most sleep-deprived profession. Long hours are particularly endemic in the video game industry, where developers must endure "crunch time" as deadlines approach.

But it doesn’t have to be that way. There’s plenty of evidence to suggest that long hours don’t increase productivity. In fact, crunch time may hurt more than it helps.

There’s nothing wrong with putting in extra effort. Fred Brooks praises "running faster than necessary, moving sooner than necessary, trying harder than necessary." But he also warns against confusing effort with progress.

More often than not, Brooks says, software projects run late due to chronic schedule slippage, not catastrophes. Maybe the initial estimates were unrealistic. Maybe the project milestones were fuzzy and poorly defined. Or maybe they changed midstream when the client added requirements or requested new features.

Either way, the result is the same. As the little delays add up, programmers are forced into crisis mode, but their extra efforts are spent chasing goals that can no longer be reached. As the project schedule slips further, so does morale.

Some programmers might be content to work until they drop, but most have families, friends, and personal lives, like everyone else. They’d be happy to leave the office when everyone else does. So instead of praising coders for working long hours, concentrate on figuring out why they have to — and how it can stop. They’ll appreciate it far more than free pizza, guaranteed.

Read More:

http://www.pcworld.com/businesscenter/article/254286/7_

programming_myths_busted.html

Did you like this? Share it:

C Is The Most Popular Programming Language In April

Have you heard of the TIOBE Programming Community Index? It’s a table that lists the ratings of programming languages and tracks their status throughout the developer ecosystem. It’s a good indicator of where a language stands in terms of its general use. April has a few surprises though.

It was found that Java is a downward trend from it’s top spot in the developer world. It would appear that C is now the most popular programming language in the world at a rating of 17.555 percent. It’s not all that bad for Java though since it’s rating for April is at 17.026 percent. TIOBE Software says that Java will never diminish too badly due to the Android development scene.

How does TIOBE find these results? Here’s how the Web site puts it:

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

What’s interesting is that C-based languages make up the majority of the top five list with C++ coming in at number three with a rating of 8.896 percent, Objective-C at number four with 8.236 percent and C# at number 5 with 7.348 percent. Objective-C has seen the largest climb with its position at number eight this time last year.

While Java may be doing down, JavaScript is working it’s way up rather slowly. It was at number 10 this time last year, but now it’s at number nine.

TIOBE hopes that their list will help developers make the proper choice when it comes to building new applications. Choosing a more popular language will ensure maximum compatibility, but there are applications being made now that should make language conversion easier for those who want to program applications in multiple languages.

Here’s the top 20 languages for the month of April according to the TIOBE Index:

C Most Popular Programming Language In April

Did you like this? Share it:

Java updates for Flashback avoid OS X Tiger and Leopard

To help tackle the recent Flashback malware threat, Apple released a couple of updates for the Java runtime in OS X to bring it up to the latest Java release (version 1.6.0_31), which patches the vulnerability being exploited.

The updates are available for OS X 10.6 and 10.7 systems that have Java installed; you can update your system by using the Software Update utility in the Apple menu. However, so far there have been no updates to patch older versions of OS X such as Tiger and Leopard, which come with Java runtimes installed and therefore are vulnerable to Flashback.

When OS X Lion was released, Apple stopped supporting prior versions of OS X, so it’s not very likely that Apple will release an update to patch Java on these systems. Therefore, if you use an older Mac you’ll need to take alternative steps to protect it.

1. Upgrade your Mac

If you are running an Intel-based Mac, you should be able to upgrade to at least OS X Snow Leopard, and apply the latest Java patch. While Apple does not sell Snow Leopard anymore, you should be able to find it online, for example through Amazon or eBay.

2. Disable Java

If you can’t upgrade your system, then for now the best option is to disable Java. As mentioned in prior coverage of Flashback, you can do this through the Java Preferences utility or the preferences of your Web browser.

Unfortunately, for now, if you are still using an older PowerPC-based Mac system, then to protect against Flashback you will need to disable Java, as these systems can only be upgraded to a maximum of OS X 10.5.8. While the Flashback malware is suspected to have only been built to attack Intel-based systems, that isn’t known for sure.

In OS X 10.4 and earlier there is no option to disable the Java runtime in the Java Preferences utility; however, you can still do so within your Web browser. This will allow local Java applications to run, but will prevent Web-based applets from running.

Read More:

http://reviews.cnet.com/8301-13727_7-57411535-263/java-updates-for-flashback-avoid-os-x-tiger-and-leopard/

Did you like this? Share it:

Legal Process Outsourcers don’t fall foul of Indian Advocates Act

After almost two years of false starts, adjourned hearings and painfully slow progression through the Indian courts, the Madras High Court finally ruled last month that foreign law firms can advise on international law and take part in international arbitration while physically being located within India. The ruling further confirmed that LPO companies are not engaging in the unlawful practice of Indian law and therefore do not fall foul of the Advocates Act 1961, which limits the practice of Indian law to Indian advocates. On reflection, perhaps I should not be overly critical with regard to the lapse of time prior to achieving a ruling. The issue of the unlawful practice of Indian law is one that raised its head a couple of years earlier. In December 2009, leading law firms Ashurst, Chadbourne & Parke and White & Case lost a long-running and related case against the Lawyers’ Collective, with the Bombay High Court deciding that the practice of law by foreign firms in India was illegal. That decision came 14 years after the initial filings!

The Madras complaint was filed in March 2010 by a group of local lawyers calling themselves the Association of Indian Lawyers, against 31 of the world’s leading law firms (including Linklaters, Freshfields, White & Case, Wilmer Hale, Pillsbury, Allen & Overy, Clayton Utz and Freehills), and one legal process outsourcing provider, namely my employer, Integreon. The petition alleged that these US, UK and Australian law firms were engaging in the unlawful practice of Indian law, which has long been prohibited under the terms of the Advocates Act.  While it is self-evident to many that the practice of law can include not only litigation but corporate practice, the provision of legal advice etc, the complaint itself targeted activities that have become routine among international law firms such as meeting with clients in hotels, sometimes referenced as “fly-in, fly-out” meetings, attending conferences and seminars, and participating in arbitration in India.

So where is the link to LPO, I hear you ask? Well, the petitioner alleged that one of the methodologies that foreign law firms utilise to facilitate their unlawful practice of Indian law is through the medium of LPO, and I quote from the judgment, where the court summarised the petitioner’s assertions, “under the guise of LPO… foreign lawyers are visiting India… earning money from their clients in India".  While Integreon was the only LPO company included in the petition, there were no allegations specifically made against Integreon or in fact against any other LPO provider anywhere in the pleadings. Rather the allegations against the foreign law firms, put simply, were that via their relationships with LPO companies, they were engaging in the unlawful practice of Indian law. 

Source: http://www.outsourcemagazine.co.uk/articles/item/4398-legal-process-outsourcers-dont-fall-foul-of-indian-advocates-act

Did you like this? Share it:

Why Did I Choose the Programming Language Lua?

Introduction: The author who wrote this essay was motivated by a message in the email list of Lua saying “why isn’t Lua more widely used?” There are a variety of responses to this question. Some say it is for lack of class libraries, but the author supports another opinion more. That is, it is for the reason that most people do not like to solve problems by themselves. We always compare Lua with Arch Linux, which means that Lua is destined to be a product used by the minority. Here are some reasons for why I use Lua:

clip_image002

1. It can be integrated with C/C++

I do not have much experience of programming, but I have used a lot of languages, including Lisp,Scheme,Python,Perl,Bash,VBA,SQL, etc. None of them can work if you mix them with C. The API of C programming language is very clear, so it only takes you one afternoon to get familiar with it. If you are interested, you can have a look at “PIL’s section on the C API”.

Why is this feature so important? First, if you have a ready C/C++ class library, it is easy for you to use the API. Or you can write a foot script to let Lua execute in C language, which means the Lua program will not have the speed problem. If you think Lua is not fast enough, you can rewrite the codes in C language. Though programs of other languages can be rewritten in C language, I have not found anything more easily to achieve this than Lua.

2. It is fast and clear.

Compared to other languages, Lua is more efficient. It is probably because Lua uses the virtual machine that is based on a register, not a storehouse. Or we can say developers of Lua are all freaking awesome. Anyhow, you hardly need to take the performance of Lua codes into account.

But if you are still unsatisfied with the performance, you can try LuaJIT:

“LuaJIT is universally known as a dynamical programming language with the fastest performance. It occupies little RAM, with virtual machine occupying less than 125k and JIT compiler less than 85k (in the x86 environment).”

3. You can learn a lot.

Despite the fact that it is not a function of a programming language, I found that while using Lua, my knowledge about computer science has been increased. For example, I read the article about how Lua5.0 works and I learned that how the virtual machine works. My horizon was widened while reading something about source code. I think it all thanks to the steady improvement of Lua.

4. Functional Programming

Lua provides a framework of functional programming, which makes programming more fun. The features such as anonymous functions, higher order functions, lexical closures, proper tail calls are not syntactic sugar of some languages. However, Lua integrated the features at the bottom level. For instance, every method of Lua is a value (such as number 2, or a character string “ktr”), which means that every method is anonymous. You just need to give them names so that you can use them. You can reassign print:

print = math.sin

You can use this function to create a sandboxie. If the print is a dangerous process, you can replace it with your own print or cancel it.

5. Everything is a table

In Lua, every variable type is a table, such as Array,Hash,“module” or global variables and so on. It means you can “require” some modules (resembles Python’s import sentences), and regard results as tables. In Python, you can__import__(‘…’) some modules, and the variables of the return value can be visited by a method resembling var(module. In Lua, you can visit variables of modules through module[var]. Mentioning Python, I meant to emphasize the difference and convenience of Lua, and it will also help you learn the grammar of Lua faster. You do not have to worry about the difference between list and dictionary or package.

6. The consistency

I do not know if you have realized that, Lua is a pretty consistent language. A lot of functions of it were made just right. For example, Lua does not have the FOR-Loop until Lua 4.0, 7 years later after Lua was released. That is because the WHILE-Loop is more popular, and the grammar is more concise. The development team of Lua is comparatively conservative, and they cannot accept patch, so the evolution of Lua is slow but steady. You know, every function is under planning, which means you cannot expect your expecting functions can be realized very soon.

7. Transportability

I will not talk about a lot of details about this point, but Lua can be operated in almost all environments. Codes of Lua are compiled according to the “Clean ANSI C” standard. So if you have a C language operating environment, you can also use Lua.

In a conclusion, Lua is a very simple but also a very powerful language.

Did you like this? Share it:

Some Misunderstandings of Pair Programming

I have a lot of programming experience accumulated during some past few years. Some experience were gained while working in our team, some were at the clients, some in coding dojo, and some in the open source projects.

Pair programming is great and efficient to the programmers knowing how to use pair programming. But you can’t expect programmers to do great in front of computers at the very beginning of pair programming. Pair programming needs learning and programmers are required to know the difference between an executor (who types on the keyboard) and a pilot. Here are some details.

1. Misunderstandings Of A Pilot

A. The One Who Orders

Those who are fond of giving orders always tell the executors, “add a ‘)’ in the end, then…”. He does not care about solutions and what to do next, but is over-concerned about the details of programming. Actually, he hopes to type the keyboard himself. So when you come across someone who likes to order, then let him type the keyboard instead of being the pilot.

B. The One Who Picks Out Your Spelling Mistakes

If the pilot sits beside you, correcting every spelling mistake you have made, he will not have time to do the real piloting. Just communicate with your correction-maker, and suggest him giving you a cup of coffee (or anything you want) when he is going to correct the mistakes.

C. The One Who Criticizes

The criticizer will criticize every line of codes you write. If his opinion is right, he will not use your codes but insist on his. Try to exchange your roles, or the criticizers may become someone who is too complacent.

D. The One Who Is Silent

The silent man is someone who barely expresses opinions. He is just looking at you working.

Try to ask him what his opinions are on your programming, or what testing codes you should write next.

E. The One Whose Mind Is Absent

This kind of person is there to distract you, not giving you some constructive opinions and helping you solve problems. So just let him leave. You would rather program on your own than with someone distracting you.

2. Misunderstandings Of An Executor

A. The One Who Does Not Tell What He Is Doing

This kind of person just types the codes without telling others what he is doing. The pilot has to figure out what the codes mean. There is no discussion between the pilot and the executor about what methods they should select and how to design. The pilot should ask him about him his plans and opinions.

B. The One Who Is Too Self-Important

This kind of person usually ignores the pilot’s suggestions, for he believes his own opinions are better. When you come across such person, just stop the pair programming thing, and start with the next task. Someone who is self-important will not be a good pilot, either. He will probably become the one who orders or criticizes.

C. The One Who Does Not Know What To Do

Such person is usually not very comfortable with pair programming. They are nervous, and not able to handle the situation. Just make sure you try your best to play the pilot role. Be cautious while giving opinions, and mostly offer encouragement. Most programmers experienced this at the beginning. So don’t hold too much expectation. Let him be a pilot first, or find some pilot who is good at getting along with people to work with him.

D. The One Who Skips Between Codes

Such person likes to skip between the codes, which causes that the pilot does not know where he is. The pilot should to let him slow down, and ask him about his plans, and make sure the pilot knows more shortcut keys than him.

E. The One Who Is Not Familiar With The Tools

This kind of person does not know the shortcut keys in the development environment, which is not efficient. Try to exchange your roles, let him see your skills. Or you can give him a cheat sheet with a list of shortcut keys.

Did you like this? Share it: