Credits: Gsmarena

Credits: Gsmarena

 

Today Google is releasing the second (and last) Developer Preview build for Android 7.1. The first one went out last month to the Huawei Nexus 6P, LG Nexus 5X, and the Pixel C. This time around, the HTC Nexus 9 is joining those three devices in receiving the beta software.

The factory images are already up for grabs from Google’s special website, if you know how to deal with those. If not, the easy way is to join the Android Beta Program and then just wait for an over-the-air update to this preview build. That should arrive within a week. The build number is NPF26F for all devices except the Pixel C, which has NPF26H.

This is Android 7.1.1 Nougat we’re talking about here, and the final release of this version will be out in December. It will make its way to Google’s Pixel and Pixel XL, but also to “the full lineup of supported devices”, which according to the company’s initial report in October includes the Pixel C, Nexus 5X, 6P, 6, 9, Nexus Player, and certain Android One handsets.

Android 7.1.1 isn’t going to come with huge updates, as its versioning strongly implies (and also the fact that it’s still called Nougat). It does bring with it support for image keyboards, circular launcher icons, enhanced wallpaper metadata, some new APIs for calling apps, and app shortcuts (which give you options when you long-press on an app in your launcher).

Credits: Zdnet

Credits: Zdnet

 

On the one hand, businesses want the most stable operating systems. That’s why Red Hathas Red Hat Enterpise Linux (RHEL). On the other, developers want the newest and fastest development tools. That’s why Red Hat also puts out the community Fedora Linuxdistribution. But what if you want both? Red Hat has you covered with Red Hat Developer Toolset 6.

Toolset, along with Red Hat Software Collections 2.3, provides the latest and greatest software tools for RHEL programmers.

Red Hat Developer Toolset helps to streamline application development by giving developers access to the latest, stable open source C and C++ compilers and complementary development and performance profiling tools. It’s available to members of the Red Hat Developer Program. Staring in April 2016, this program also includes a free RHEL developer subscription.

The Toolset enables developers to compile applications once and deploy across multiple versions of Red Hat Enterprise Linux. It is available across multiple architectures with the following Red Hat Enterprise Linux subscriptions: RHEL on x86 systems (Intel and AMD); RHEL for Power; RHEL for z Systems; and RHEL Server for ARM Developer Preview.

Here’s what you’ll get in the latest Red Hat Software Collection:

 The MySQL 5.7 and Redis 3.2 open source databases
  • Perl 5.24 and PHP 7.0, both dynamic open source languages (Perl 5.24 and PHP 7.0)
  • Git 2.9, the latest stable version of the open source software version control system
  • Thermostat 1.6, a Java Virtual Machine (JVM) monitoring tool
  • Eclipse Neon (4.6.1), the latest stable version of the Eclipse integrated development environment (IDE) — Eclipse Neon is also now available as its own software collection and is no longer a part of Red Hat Developer Toolset

In addition, many collections have been updated, including:

  • PHP 5.6
  • Python 3.5
  • Ruby 2.3
  • MongoDB 3.2

The Red Hat Developer Toolset has been updated to include:

  • The GNU Compiler Collection (GCC) 6.2.1
  • The GNU Project Debugger (GDB) 7.12
  • A number of updates to toolchain components and performance tools
    • binutils (2.27)
    • elfutils (0.167)
    • Valgrind (3.12)
    • Dyninst (9.2.0)
    • strace (4.12)
    • SystemTap (3.0)

Both are available now to customers with select active RHEL subscriptions, as well as through the Red Hat Developer Program. Many of the most popular programmers are also available as Docker containers and Docker-formatted images. These containerized programs are available via the Red Hat Customer Portal.

Red Hat is delivering all this programmer goodness because, as Jim Totton, Red Hat’s vice president of the Platforms Business Unit, put it: “To help achieve the benefits promised by modern applications, development methods should include newer, innovative tools, but not at the cost of enterprise IT stability.”

Credits: Motherboard.vice

Credits: Motherboard.vice

 

Based on code analyses and scans of 50,000 different applications written within the past 18 months, cloud security firm Veracode has compiled a list of the most and least secure programming languages. Software engineers won’t find it especially surprising, with PHP, venue for many a popular and ready-made hack, blowing away the competition.

The report looked as a subset of the most pervasive programming languages/language families used today, including PHP, Java, Microsoft Classic ASP, .NET, iOS, Android, C and C++, JavaScript, ColdFusion, Ruby, and COBOL. Some 86 percent of analyzed programs written in PHP came with at least one cross-site scripting (XSS) vulnerability; 56 revealed at least one SQL injection bug; and 73 percent had encryption issues. Of applications written in the ColdFusion language, which serves a web scripting role similar to PHP and is already fairly notorious in its vulnerabilities, 62 percent revealed an SQL injection bug.

Scripting/web development languages were generally worse off than their more traditional counterparts, such as Java and C++. 21 percent of Java apps were found to have SQL injection vulnerabilities, while 29 percent of applications written within Microsoft’s .NET framework, which serves to unify several different foundational languages in one execution environment (like Java), had the SQL vulnerability.

Of course, different languages are used for different things and in many respects comparing PHP to Java or C++ is apples and oranges. The prior is used to glue the internet together, essentially, while the latter are used more so to develop compiled/executable software. PHP runs within a web browser, while Java (etc.) runs the web browser itself.

But that’s only part of it. In terms of basic design, some languages are just better security-wise.

“It is noteworthy that web vulnerabilities like SQL injection and Cross-Site Scripting are substantially more prevalent in applications written in web scripting languages such as Classic ASP, ColdFusion and PHP, compared to .NET and Java applications,” the report explains. “This is very likely due to differences in the feature sets of each language. There are fewer security APIs built into Classic ASP, PHP and ColdFusion than have been provided for .NET and Java.”

Java, in particular, has what’s known as automated garbage collection. This just means that the language itself (or its execution environment, the Java Virtual Machine) will prevent a program from doing untoward things with a system’s memory. “By removing the need (and ability) for developers to directly allocate memory, languages such as Java and the .NET language family avoid (almost) entirely vulnerabilities dealing with memory allocation, most notably buffer overflows,” the Veracode report explains.

Part of the problem also has to do with who is using these various languages and what they’re level of experience is. Don’t believe the hype: A web development crash course is not going to teach the same stuff as years of computer science education (really).

“.NET and Java programs are typically used by computer science graduates who learned those languages in school,” Chris Wysopal, Veracode’s CTO, told Information Week. “A lot of the scripting languages like ColdFusion and ASP came out of the Web dev world, where you’re designing websites and starting to learn coding, [and] to make sites more interactive.”

Credits: Siliconrepublic

Credits: Siliconrepublic

A snazzy spot

We meet in Etsy’s pretty snazzy Dublin office, with Lerdorf working as an engineer for the company for a few years now after his role as adviser started reaching a bit beyond the title.

“Etsy grew large enough to afford me,” he jokes, but really his history at Yahoo – where he spent seven years – with Etsy’s creators meant he’s had his fingers in the company pie since very early on.

He notes that computer science purists love the art of coding, “if the algorithm is cool, if the integration is pretty, they’re happy,” he says. “For me, it’s all about the end product, not how I got there.”

Programming is a process towards creating a good online service, much like flying is a process to get him from San Francisco to Dublin. “I hate flying,” he says, “but I’m here.”

Etsy Rasmus Lerdorf

Taking the scenic route

So how did he get here, into a Dublin office that seems remarkably, well, American? Born in Greenland, Lerdorf left for Denmark at just three years of age.

From there he moved to Toronto at 13, attending the University of Waterloo before spending three years in Brazil, a sojourn into North Carolina and his current residency in San Francisco.

He calls himself “the only Latino Eskimo in California,” a title he claims on the back of ticking a box on an official form when he entered the state many years ago.

All in all, Lerdorf has resided in many a home, learning many a language, but it’s his computer tongue that is most notable. PHP is a programming language that dragged the internet world across the laborious desert of C and helped form what today is a wildly intuitive online community.

The ’90s, eh?

Back in the mid-90s, Lerdorf was pretty underwhelmed at the options available to web design. C and Perl were far too time-consuming for what the internet was itching to become: fast, responsive and immensely editable.

When the web began hitting the mainstream, companies were in a frenzy, they wanted to embrace it and their best idea, at first, was to put their documentation up online.

Rasmus Lerdorf PHP

“With this they went to their technical writers and got them to put stuff out there,” he says, only for the process to kickstart a low point in programming, with technical writers becoming web designers by default.

“They went to Microsoft Word, saved documents as HTML, then put them online via FTP. Fine,” he says, “until companies wanted these documents, or other pages, to be more dynamic.”

Dynamism, on the clock

The problem that faced Lerdorf was something many had noticed. He wanted to find a way to produce things like different iterations of a company contact page that worked at different times. Often just minor tweaks, like phone numbers alternates, required recoding an entire page. A ton of C or Mod CGI, primarily.

Lerdorf needed a solution. Working in CGI (not the special effects), he created some libraries and gradually created PHP, which is part of the backend of up to 80pc of all websites nowadays.

PHP 7 was released at the end of last year, far removed from the original, “but some of the original code would still work” he enthuses. Some say the improvements in PHP 7 are actually quite remarkable, reports of 100pc speed increases, for example, have surfaced. But compatibility was the key driver.

“One of the things we wanted to do is make sure we didn’t create a Python 2 to Python 3-type of issue. If you have decently written PHP 5 code it should work perfectly in 7,” he says, citing Dmitry Stogov, Xinchen Hui and Nikita Popov as the key drivers of the new language.

PHP: we are hugely reliant on it

The likes of Facebook, CurrencyFair, Wikipedia, Tumblr, Mailchimp, Flickr, Yahoo and Etsy are just some of the plethora of major online websites that rely largely on PHP. The latter two are companies Lerdorf is quick to comment on.

“I worked with Yahoo for seven years, but it can get demoralising when you work in an ad-centric web company. You are essentially fighting your users. You try to push advertising onto them, they try to avoid it.”

I tell him that he has just described the vast majority of the online world and he stops me: “I know, it’s very hard, but at Etsy I’m happy. We are providing a hell of a lot more to our customers than we are extracting. And we’re not tricking customers either.”

Etsy Rasmus Lerdorf PHP

Crafty thinking

With around 800 employees overall, and 46 in Dublin, Lerdorf tells me any new engineer starting in Etsy (of which there will be more, soon) must produce some new package on their first day.

Not a place to drag your heels, but then again he doesn’t expect to work with any two-bit programmers. And he’s quick to point out PHP isn’t the be-all and end-all. “Like the spoken word, different languages are created in different areas, there will never be one.” So Python, Ruby or whatever, have at it.

There is one requirement he puts on future colleagues, though, and it’s something we’ve heard a few people discuss in recent years: an understanding of C.

Despite its laborious nature, C underpins pretty much everything online, with Lerdorf “a little sceptical” of any programmer without an understanding of it.

But then he has to run off to catch a dreaded flight, a bit more process before the next end project, so. His flying visit, which took in a PHP meet-up in Dublin, is over.

Credits: Iamwire

Credits: Iamwire

 

We can hardly imagine our life without social networking websites like Facebook, Flickr, Pinterest, etc. Such websites have become much more than news portals or tools linking people from all over world – they are now sources of income not only for their owners, but also for businesses that use these networks to build their online presence.

With many businesses being interested in running their own social networking websites, development of such websites is gaining traction right now. There are many programming languages that can be used to develop social networks. We are going to discuss the most popular ones that are often chosen for websites development.

PHP

This programming language is very popular among social network developers: it is recognized as a very powerful tool enabling to make dynamic and interactive web pages. According to estimates by W3Techs, PHP is used by more than 80% of all the websites whose server-side programming language is known. Besides, PHP is made use of in most out-of-the-box social networking software.

Major social networks like Facebook and Pinterest use PHP. Facebook started off as a PHP website. Now Facebook uses HACK, its custom-tailored dialect of PHP. The Russian social networking giant, Vkontakte, also developed its own version of PHP – KPHP – to improve performance of the website. KPHP is believed to be much productive that HACK.

Websites written on PHP often face hacker attacks: many people know this language, and some of them turned to the “dark side of the Force” and started stealing valuable data that can be used by their bosses or sold to someone else. One more problem is the direct correlation between growth of a PHP website and a number of servers required to run it.

Notwithstanding this fact PHP remains a programming language that makes it possible to develop a social networking website in a very quick manner. Besides, a cost of such projects is not very high if compared to other languages.

Similar Read:  How to Build Technology that Feels Like a Friend

Java

Java is often chosen by those developers who plan to create high-traffic websites which need room to grow. And the main reason for that is that websites built using this language outperform others in terms of speed. Another advantage of Java is that it is platform-independent due to availability of the Java Virtual Machine. Java does not requires a compiler to become readable on any platform – the Machine interprets compiled Java binary code for a computer’s processor.

One more factor making Java so attractive for social network developers is its great development ecosystem. This programming language also has a big community of developers and, consequently, can boast excellent documentation as well as support coming along with it. Java makes both sever-side and client-side programming possible. If you plan to develop a complex website (e.g. a social network) that will be reliable enough Java is the best choice in this case.

But there are some factors that should be considered before launching a Java project, and a high cost of such a project is the first one to take into account. A team of Java programmers costs much more than any other programming language team. Other factors are high server and client requirements and complex infrastructure that must be developed and supported.

So if you plan to develop a small social network or a community think twice before choosing Java for this purpose.

Perl

A high level language designed to be fast to write and fast to run, Perl was developed around three decades ago, but it became useful for web programming in the late/mid 1990-s when developers started to use it to create dynamic web pages. This language has been losing ground since PHP was designed as a language for web development.

However, those who think that Perl is not used any more for websites development are mistaken. Though there are many websites written on other languages, Perl is still made use of. A number of well-known websites were built using this programming language: Craigslist, IMDb, Amazon, and more.

Perl can boast a large and friendly community. That is why it is easy to find good code examples or get answers you need using online forums or discuss best practices with other Perl developers. This language is still live – a new version of Perl (Perl 6) was released last year.

But will Perl work for a social network? Those who love this language will give a positive answer. Indeed, Perl can be used for anything. However, you will need many man-hours to create a web framework that will work properly. Development of a complex social networking website in pure Perl will not only take much time, but also result in significant expenses.

Python

Python is known as an easy, flexible and powerful general purpose programming language that is good for web development. This programming language is used by such online properties as Pinterest, Reddit, Youtube and Disqus, to name a few.

However, Python can handle only the back-end part of a social network. You will have to do the front-end part in different languages (e.g. HTML) since Python does not support them. There are many frameworks that can be used to make websites in Python. Developers can create their frameworks, as well.

That sounds promising, isn’t it? But is Python a good choice for custom social networks? Social networking websites have many users and many instances of all their pages run simultaneously, thus representing high-load environments. Generally recognized as an interpreted language, Python needs more time to process requests than compiled languages need. So compiled languages are preferable when it comes to social pages.

One more problem is that Python is not supported by many cheap web hosts, while PHP is supported by nearly all web hosts. A cost of Python projects is relatively high, while this language is believed to be a little bit outdated irrespective regular releases of new versions.

.NET

Though it is not a programming language, this framework is worth being included in this list. It has become very popular given support provided by Microsoft, its developer.

Some of the biggest social networking websites were created using it. Myspace is one of these websites.

Social giants like Facebook would choose .NET for their websites if they were developed today. This platform has many advantages. For instance, there are many developers working with this .Net. You can be sure that a website developed using .NET will have solid and quick performance.

This framework continues to develop, and it has a large community which provides solid support to all its members and it is very friendly to newcomers.

But there are some cons, as well. One of them is that open source databases and messaging platforms that are commonly used by websites like Twitter often have little or even no support for Windows. .Net is also often associated with its early versions which lagged behind PHP to a great extent. If you plan to continue developing you social networking website you may face great expenses as a .NET project becomes more expensive per server.

All in all, there are many programming languages that can be used to develop a social networking website. A number of factors will impact the choice of a language: a complexity of the project, future development plans, a budget of a project, etc. The first step you need to take is to discuss your idea with a company having experience in social network development.

Credits: Hostreview

Credits: Hostreview

It is hard to recommend a specific framework in general. The decision of framework depends particularly on your preferences (and skills) as a developer and on how precisely you are attempting to finish.

 

Today internet has bunches of websites, each second developer makes another site and it is easy to build a website however with PHP frameworks. A few sorts of frameworks available in the market and all are famous frameworks yet Laravel is the best framework for components and for other numerous reasons.

 

Top PHP Frameworks which are most liked by PHP Developers:

1. Zend Framework is a decent establishment for everything and can be used additionally as only a library of different functions. It is likewise the nearest thing to be an “official” PHP framework so there are a great deal of developers who know how to utilize it. It is, in any case, not a framework you would use to model something rapidly.

 

2. Codeigniter is a free PHP framework by EllisLab. Codeigniter’s elements resemble no PHP  version conflict, perfect with standard hosting, very nearly zero installation, easy error handling, easy security, encryption steps and rich inherent libraries and helper. It accompanies clear documentation.

 

I’ve mentioned on here before that Codeigniter was the primary framework I ever utilized and helped me at long last understand the idea of Object Oriented programming. It’s absolutely well known, and has been around a similar amount of time as Cake.

 

3. A decent example is CakePHP, which is an extremely famous framework. Genuinely simple to learn. It has a great deal of sensible defaults and naming conventions that make your life much simpler, however which you can override.

 

Cake, in the event that I review effectively, was one of the principal PHP frameworks around back when spaghetti code was standard. The thought behind Cake was to make creating applications quick (ie, “convention over configuration”) by cutting down on how much code the developer expected to compose. Less time working means additional time money.

 

I was pretty skeptical about the viability of the CakePHP project since some of the core developers have left in 2009 to form the Lithium Framework.  However it got particular boost with the development release of CakePHP 2.0 which will address a number of issues developers had with the original CakePHP. Overall, this should be an interesting framework to watch.

 

4. Yii framework is used to build multi tenant, secure and effective caching applications. Yii is quick, steady, secure, high performing and gives MVC design pattern, rich featured caching scheme, role-based access and authentication, DAO (Database Access Objects), Ajax-enabled widgets and lots more.

 

Yii is a superior PHP Framework best to developing Web 2.0 applications. It comes with rich elements: MVC, DAO/ActiveRecord, I18N, caching, authentication and role-based access control, platform, testing, open source, high performing, object oriented, database access object, simple form validation, support for web services and some more. Yii Framework is perfect and ideal for developing social networking websites reduces development time significantly.

 

5. The Laravel framework will stay at the top, because of the huge interest from developers and customers worldwide (By 2016 overview). Laravel is growing so quickly in the PHP group in view of its unlimited quality and excessively included code base structure and its effective yet otherworldly ORM i.e Eloquent.

Image credit: sitepoint.com

The advantages of utilizing Laravel framework can be outlined as follows:

 

  • Solid ORM features builds its similarity and simplicity of use with database relations
  • Laravel outsourcing makes the arrangement of creating programming that display high extensibility through ease of maintenance. It has the arrangement of developing application software through serious usage of organizer structure and direct its working according to the carefulness of developer.
  • Laravel’s Blade templating Engine builds proficiency of code composing process. In addition, the code that has been composed compiles at a quick pace and the resulting outputs are cached. In this way, it gets to be complete to include modules and extra elements without disturbing the center architectural software framework.
  • Laravel’s Artisan bundle gives much ease in the usage of CLI tools like migration and tasks
  • Scope of reverse routing and detailed documentation
  • Executing a verification module is much simpler in Laravel framework. Laravel’s authentication configuration file is situated in the auth.php file inside the config folder. It contains a few changes that could alter the conduct of authentication module.

 

Laravel helps to solve common software problems such as:

 

  • Building an Authentication and Authorization Systems
  • Integration with Mail Services
  • Integration with Tools for Making Web Applications Faster
  • Fixing the Most Common Technical Vulnerabilities
  • Configuration Error and Exception Handling
  • Automation Testing Work
  • URL Routing Configuration
  • Separation “Business Logic Code” from “Presentation Code”
  • Message Queue System (Delayed Delivery) Configuration
  • Scheduling Tasks Configuration and Management

 

One can securely say that Laravel is the most popular PHP framework at this moment. Laravel developers to make web development simple and quick with splendid and perfect sentence structure. It empowered developers to work easily by rearranging every common tasks with the help of its built-in tools. Routing, authentication, queuing and caching are to give some examples.

 

As per this article published in Techninasia (best trending PHP frameworks for 2016), searches for word “Laravel” is trending the most while compared with other PHP frameworks. This is only one way for confirming that Laravel is in reality a standout among the most inclining and the best PHP frameworks in 2016.

 

Credits: Rit

Credits: Rit

 

RIT is launching a Video Game Design XSeries program with edX, the leading nonprofit online learning destination founded by Harvard and MIT. XSeries programs are designed to provide learners with a rich understanding of an area of study through a series of offerings grouped under one subject. XSeries programs also include an opportunity to earn an XSeries verified certificate to demonstrate competency and knowledge in a specific field.

Enrollment for the five offerings in the Video Game Design XSeries program is now open. The first offering begins Oct. 31.

The series will teach learners about the skills they would need to become a successful video game designer and explore what job opportunities they could pursue in the industry. Offerings are taught by faculty in RIT’s School of Interactive Games and Media.

“You’ll learn how game history influences design, how designers and programmers think, the various roles within the video game design discipline and how all the pieces come together,” said Stephen Jacobs, professor of interactive games and media at RIT and an instructor in the XSeries. “We want to help people develop a deeper understanding of the field, the discipline and explore the related career paths as well.”

The XSeries consists of five, five-week offerings:

  • Video Game Design History (starts Oct. 31)
  • Video Game Design and Balance (starts Jan. 2, 2017)
  • Video Game Asset Creation and Process (starts March 6, 2017)
  • Video Game Design: Teamwork & Collaboration (starts July 24, 2017)
  • Gameplay Programming for Video Game Designers (starts Sept. 11, 2017)

Within each offering, learners will have access to several videos from the instructors each week, readings, discussion boards with other participants and multiple-choice quizzes. Each weekly unit takes about three hours to complete.

The series will explore everything from how to create simple elements of running game code to how different industry roles collaborate to produce, market and ship a video game.

The first offering will explore the history of the video game design industry, with insights from the International Center for the History of Electronic Games (ICHEG) at The Strong National Museum of Play, the largest and most comprehensive public assemblage of video games and related materials in the world.

“Just as writers learn their craft by reading and studying great works of the past, video game designers need to know how game design has developed and evolved over the years,” said Jon-Paul C. Dyson, director of ICHEG and vice president for exhibits at The Strong, who is co-instructor for the Video Game Design History offering. “Participants will have a unique learning opportunity in this course to see prototypes, designer notes, rare games and other iconic artifacts from The Strong’s unparalleled collection that showcase the history of game design.”

RIT’s game design and development graduate and undergraduate programs have been ranked among the Princeton Review’s list of top schools for video game design for more than five years. Graduates of RIT’s game design and development programs have gone on to work at some of the industry’s top employers, including Amazon Games, Apple, Bungie Studios, Blizzard Entertainment, EA Games, Epic Games, Google, Konami Gaming Inc., Microsoft, Rockstar Games, Sony Interactive Entertainment, Valve Corporation and Walt Disney Interactive.

RIT’s game design and development program is housed within the School of Interactive Games and Media, in RIT’s B. Thomas Golisano College of Computing and Information Sciences. The RIT XSeries is made possible with help from RIT’s Innovative Learning Institute.

“As a world-renowned leader in the field of video game design, RIT is an ideal partner to offer this XSeries program to the edX global community of more than 9 million learners,” said Anant Agarwal, edX CEO and MIT professor. “We are proud to work with RIT to launch this program that provides learners with a rich understanding of the history and design of video games and teaches the skills and competencies necessary to excel in this exciting, fast-growing industry.”

Credits: Eurekalert

Credits: Eurekalert

 

Dynamic programming is a technique that can yield relatively efficient solutions to computational problems in economics, genomic analysis, and other fields. But adapting it to computer chips with multiple “cores,” or processing units, requires a level of programming expertise that few economists and biologists have.

Researchers from MIT’s Computer Science and Artificial Intelligence Laboratory (CSAIL) and Stony Brook University aim to change that, with a new system that allows users to describe what they want their programs to do in very general terms. It then automatically produces versions of those programs that are optimized to run on multicore chips. It also guarantees that the new versions will yield exactly the same results that the single-core versions would, albeit much faster.

In experiments, the researchers used the system to “parallelize” several algorithms that used dynamic programming, splitting them up so that they would run on multicore chips. The resulting programs were between three and 11 times as fast as those produced by earlier techniques for automatic parallelization, and they were generally as efficient as those that were hand-parallelized by computer scientists.

The researchers presented their new system last week at the Association for Computing Machinery’s conference on Systems, Programming, Languages and Applications: Software for Humanity.

Dynamic programming offers exponential speedups on a certain class of problems because it stores and reuses the results of computations, rather than recomputing them every time they’re required.

“But you need more memory, because you store the results of intermediate computations,” says Shachar Itzhaky, first author on the new paper and a postdoc in the group of Armando Solar-Lezama, an associate professor of electrical engineering and computer science at MIT. “When you come to implement it, you realize that you don’t get as much speedup as you thought you would, because the memory is slow. When you store and fetch, of course, it’s still faster than redoing the computation, but it’s not as fast as it could have been.”

Outsourcing complexity

Computer scientists avoid this problem by reordering computations so that those requiring a particular stored value are executed in sequence, minimizing the number of times that the value has to be recalled from memory. That’s relatively easy to do with a single-core computer, but with multicore computers, when multiple cores are sharing data stored at multiple locations, memory management become much more complex. A hand-optimized, parallel version of a dynamic-programming algorithm is typically 10 times as long as the single-core version, and the individual lines of code are more complex, to boot.

The CSAIL researchers’ new system — dubbed Bellmania, after Richard Bellman, the applied mathematician who pioneered dynamic programming — adopts a parallelization strategy called recursive divide-and-conquer. Suppose that the task of a parallel algorithm is to perform a sequence of computations on a grid of numbers, known as a matrix. Its first task might be to divide the grid into four parts, each to be processed separately.

But then it might divide each of those four parts into four parts, and each of those into another four parts, and so on. Because this approach — recursion — involves breaking a problem into smaller subproblems, it naturally lends itself to parallelization.

Joining Itzhaky on the new paper are Solar-Lezama; Charles Leiserson, the Edwin Sibley Webster Professor of Electrical Engineering and Computer Science; Rohit Singh and Kuat Yessenov, who were MIT both graduate students in electrical engineering and computer science when the work was done; Yongquan Lu, an MIT undergraduate who participated in the project through MIT’s Undergraduate Research Opportunities Program; and Rezaul Chowdhury, an assistant professor of computer science at Stony Brook, who was formerly a research affiliate in Leiserson’s group.

Leiserson’s group specializes in divide-and-conquer parallelization techniques; Solar-Lezama’s specializes in program synthesis, or automatically generating code from high-level specifications. With Bellmania, the user simply has to describe the first step of the process — the division of the matrix and the procedures to be applied to the resulting segments. Bellmania then determines how to continue subdividing the problem so as to use memory efficiently.

Rapid search

At each level of recursion — with each successively smaller subdivision of the matrix — a program generated by Bellmania will typically perform some operation on some segment of the matrix and farm the rest out to subroutines, which can be performed in parallel. Each of those subroutines, in turn, will perform some operation on some segment of the data and farm the rest out to further subroutines, and so on.

Bellmania determines how much data should be processed at each level and which subroutines should handle the rest. “The goal is to arrange the memory accesses such that when you read a cell [of the matrix], you do as much computation as you can with it, so that you will not have to read it again later,” Itzhaky says.

Finding the optimal division of tasks requires canvassing a wide range of possibilities. Solar-Lezama’s group has developed a suite of tools to make that type of search more efficient; even so, Bellmania takes about 15 minutes to parallelize a typical dynamic-programming algorithm. That’s still much faster than a human programmer could perform the same task, however. And the result is guaranteed to be correct; hand-optimized code is so complex that it’s easy for errors to creep in.

Credits: Gamefromscratch

Credits: Gamefromscratch

 

A conversation just happened on /r/gamedev with the confusing title “What don’t new game developers know that they don’t know?”.  Essentially it was a question asking what important advice new developers don’t know (for lack of experience) but should.  My answer seems to have been extremely well received and the question is quite good, so I figure I would replicate the answer here for those of you that don’t frequent reddit.

So essentially what follows is my advice I would give my beginner self if I owned a time machine.

  • most people fail and fail hard. Perseverance is probably the most underrated but required skill of a successful game developer.
  • learning tasks in parallel is rarely productive. While I know you want to learn everything now… don’t. Learn one task/language/skill to a base level of competency before moving on to the next. It’s hard because everything is shiny and new, but it’s critical. Trying to learn too many things at once results in learning nothing at all.
  • when you are 90% done, you’re actually 50% done. Maybe… if you are lucky.
  • there is no ego in programming, or at least there shouldn’t be. A plumber or carpenter come into a job with a toolbox full of tools, and don’t limit themselves to a number three hex drive because “it’s cool”. They use the best tool for the job and sometimes that tool is a horrific hack and that’s ok too. Programmers… have often failed to learn this lesson. People invest themselves in “their language” and this frankly, is stupid. Working in C++, Java, Haskell, F#, Go, Rust or whatever other language doesn’t make you cool, just as working in GameMaker, Lua, JavaScript doesn’t make you uncool. Only exception, PHP. %#@k PHP. Moral of the story… use the right language or tool for the job. Sometimes that means performance, sometimes that means maintainability, sometimes that means quickness, sometimes that means designer friendly and sometimes it means using the tool the rest of your team is using. Be pragmatic, always be pragmatic. I personally would never hire a programmer who claimed there was a “best” language. If you have been programming for several years and don’t have several languages in your arsenal, you are probably doing it wrong.
  • if it feels wrong, it probably is. If you encounter such a code smell, even if you can’t fix it, comment on it and move on.
  • even if you work alone, comments are good. But comments for the sake of comments is worse than no comments at all. Take the time to write legible code, take the time to smartly comment what you’ve written. Six months or six years down the road, you will thank yourself.
  • version control or at least automatic backups. Do it. Now.
  • premature ejac…. er, optimization is the root of all evil. Yes, you need to be mindful of performance on a macro level, but don’t sweat the micro level until you have to. If you are just starting out, but your primary concern is performance, you are doing it wrong.
  • learn how to use a debugger. Early. It will be an invaluable skill and will help you understand how your code works better than any other single task you can perform. Also learn how to use a profiler and code linter, these will give you great insights into your code as well, but you can do this later. If you have learned the basics of a programming language but haven’t groked debugging yet, stop everything and dedicate yourself to that task. For a somewhat generic debugging tutorial start here. Seriously, learn it, now.
  • if you have access to a peer, TAKE IT. Peer reviewed coding, while at first annoying, is invaluable. Even if there is a large skill mismatch between the two people. Even just having someone go through your code and ask “why did you do this?” forces you to explain it… and often you realize… hey… why did I do that? Many programmers are solitary creatures, so the idea of peer code reviews or paired programming is anathema. Or people can be very shy about showing their code… it’s worth it to get over it. Of course not everyone has access to another programmer to use as a sounding board and not being in person makes it a lot harder and a lot less useful.
  • books are great, as is a gigantic collection of links to great articles on the web. That said unfortunately, you can’t just buy a book and learn via osmosis… you actually have to read the thing. More to the point, if you are following a tutorial or video, DO THE WORK. You will learn it a great deal more, develop muscle memory of sorts, if you actually do it. This means typing out the code and getting it to run, instead of just loading the project and pressing play. Trust me, you learn a lot more actually recreating the project.

 

Credits: Newindianexpress

Credits: Newindianexpress

A couple of software developed by the Indian Institute of Technology, Kharagpur will soon revolutionise the way in which the disabled persons can cope up with day-to-day activities. Buying vegetables from the market or composing poetry will just be a touch on the smartdevice away.

Softwares ‘Akash Baani’ and ‘Sanyog’ may help persons with disabilities, including those affected with cerebral, to express their feelings by touching icons on the screen, which will then create sentences, and further translate into voice messages.

A workshop was recently held in Kolkata to train NGOs on how these software can be used to help the disabled become more self-dependent. Professor Anupam Basu, the brainchild behind these software, while speaking to Express said, “In ‘Sanyog’, for creating a sentence like ‘I want to watch TV’, a user has to select an icon of himself, a TV and that of an eye, which will then form the sentence which will be then turn into a voice message from text to speech.

For buying vegetables, the user may select the vegetable he/she wants to buy and the quantity. The sentences will be blurted out to the shopkeeper.” Speaking about ‘Akash Baani’, Prof Basu says, “A large number of icons will be present in the software.

Each icon will have a message with it. Whenever a user selects an icon, the stored message will be spoken.” While ‘Akash Bani’ costs Rs 1,000, Sanyog’s is on the higher end priced Rs 8,000. When asked about those who can’t touch small icons on the smart devices, Prof Basu explained about an access switch that is more like a big red flat joystick with which the user may browse with whatever part of body that works — may browse the icons and select them,” Professor Basu said.

The software that have been put on display in Rashtrapati Bhavan are being used in the Indian Institute of Cerebral Palsy and Action for Ability Development and Inclusion in the national capital. It has taken 2 years to develop ‘Akash Baani’ and 4 years to develop ‘Sanyog’.

“The technologies are being transferred to Society for Natural Language Technology Research (SNLTR), under the IT department of West Bengal government,” Professor Basu said, adding that support from the state government and local NGOs are needed for expand the reach of these software into the rural areas.