Open Source, Programming

Understanding Open Source Software

A software community

Being collaborative in important, there are many benefits you could get out of it, especially if it is in a community. Communities will change things to make it better or sometimes for the worse. It depends on the amount of people, and how they work together. We are all part of a community, we have our group of friends, or our neighbours, or even if you consider the whole entire street it is considered as a community. People will get together and do what needs to be done.

Now in this case we are talking about the real life communities and how we interact in person. But these aren’t the only types of communities, there are online communities, which are built through social networks. You would be able to find them on sites like Reddit. There are even communities built of groups on YouTube and so on. But what people don’t know is that there are far more communities that are built deeper than that. Like did you know there are communities built for software, where they can change it and so on? Well this can be considered as open source. And here is the open source software explained.

What is this?

This is a type of computer software where the code is released under a license, the copy right states that the holder give users the permission to study it, and change the software to their comfort. It also gives the right to distribute the software to anyone for any purpose. This software was developed in a collaborative manner, which means that people would be able work together and get each others insights and so on. Almost all of the software, but there are some occasions in which it will cost you a bit to get it.

There are plenty of open source software, such as:

  • FreeBSD
  • Durpal
  • TYPO3
  • FlightPath
  • PuTTY
  • .Net Core

What are the advantages of open source software?

Here is open source software explained in a greater deal, on how it will be beneficial, and why so many people use it. One of the benefits of this is the lower hardware costs, because it can be easily compressed so doesn’t require much hardware power to perform tasks. It is also a high quality software, it is well designed, and can be efficient when coding. Also there are no vendor lock-in. Sometimes you will have to deal with the lack of portability, expensive license, but with this you have more freedom. There are also integrated management, it uses high end technologies, so you can easily integrate and combine servers, applications, and more. Due to the integration you would be able to have an efficient administration. Furthermore it is a simple license management, you don’t have to worry about the license now, you can download, and install the software as much as you like, and you can use it from any location too. There are also lower software costs, as you don’t have to spend on the license and fees, so you can save that money too.

What are the cons of using it?

Just like there are advantages to it, there are also negative aspects of it, one of the main disadvantages is that there are malicious users, so you will end up becoming vulnerable to them. This can happen because there are many users already, and not all of them will have good intentions, so when using it you have to be careful. Also it might not be as user-friendly as they say it is. Some of it may cater to the developer’s side, and bring their life into play, so you may not get the attention that you fully desire. Not only that but they don’t come with extensive support, since it is developed by numerous amounts of people you can’t really ask for support from one specific developer. Furthermore there is a shortage of applications, so you may to switch from software to software. Also the latest hardware may be incompatible so it may not work. These are just a few things that may change your mind.

Mobile App Development, Programming

Mobile App Development Languages

Programming Languages (PL) instruct computers and computing devices to perform a set of specific tasks, and like any human language, have a vocabulary, syntax and so on. High Level programming Languages execute computation and implement algorithms on sophisticated computing programs to achieve desired results. This end result may include control of external devices such as printers, production plants, “smart” weapons, robots, remote mining operations, medical surgery, and space rockets and so on. Mobile Apps Development (MAD) consists of acting or processing software applications for use on mobile devices such as smart phones, digital personal assistants, and similar enterprise digital assistants. In fact, it can be asserted that the Mobile Phone or Device is only as useful as the Apps developed for it. This requires special Programming Languages adapted to Mobile Device usage. It is therefore essential to first study which programming languages to learn for mobile app development.

Useful Programming Languages

Some programming languages to learn for mobile app development are as follows:

  • Java: Java is the most used PL for Mobile applications, and it has also been designated to be Android App Development’s official language. A large majority of Google Play Store apps have been developed with Java. The official support by Google and the popularity in the professional app development community means that if problems are faced during app development, there is help from the online community. At the same time, Java is a difficult language to master, particularly for Beginners. Topics like Concurrency, Constructors, Null Pointer and Checked Exceptions only add to the complexity, as does the instruction set provided by the ASDK (Android Software Development Kit). In general, while professionals often prefer Java, Beginners tend to shy away from it initially.
  • Kotlin: Kotlin removes much of the complexities of Java, and makes the Beginners life much simpler. In 2017 Kotlin has been pioneered as a secondary Java language officially, and can comfortably be inter-operating with Java. Its cross-platform functioning, and its ability to run on the JVM (Java Virtual Machine), makes it immensely flexible as an Android App Development entry point. In fact many well known dating apps, including the casual sex app meet n fuck, are built with Kotlin. Dating app companies often launch and test various platforms so the easy and cost effective entry point is attractive toward this type of mobile app.
  • C#: This PL, while being similar to Java, has a much simpler Syntax than Java. Coding in C# is therefore easier. Again, just like Java, garbage collection is implemented, so the probabilities of memory leaks are reduced substantially. The initial problem with C# for Mobile App Development (MAD) is that initially it was designed for use only on the Window system. But using ‘Xamarin.Android’ tools, C# may be useful for MAD also. The Code can now be shared across manifold platforms.
  • C++: C++ uses the ANDK (Android Native Development Kit) to carry out app development in Android. But it is very complex to use, and this creates more bugs. Debugging is a major problem. Though this gives access to C++ Code Libraries, as required, it does not provide as many benefits as Java, and is being used even less these days.
  • Python: Android did not support Python development originally. But now a number of tools have become available that may change the Python applications into Android Packages, which can then be run on Android compatible devices. A typical example is ‘Kivy’. This is used for MAD, but is actually a Python Library with Open Source. This has the dual advantage of facilitating rapid MAD, while still supporting Android.
  • Corona: This general Software Developing Kit is often used for development of Android apps using ‘Lua’. The Corona Simulator can build applications directly. Then the Corona Native can be opportune for integrating the Lua Code. Lua is simpler than Java and is also easier to learn. Also it has a number of plugins and assets that nourish the development experience. Of course, Lua is somewhat constricted in application. Corona finds its most popular applications in Games Graphic and Applications.
  • JavaScript, HTML, CSS: Apache Cordova powers the Adobe PhoneGap Framework, which allows the creation of hybrid apps which can be viewed through ‘WebView’, but are packed like an application. HTML, CSS and JavaScript uses the Adobe PhoneGap to create apps, but this is often quite time consuming and painstaking. This avenue for MAD is therefore generally avoided, and the other options outlined above are mostly used.

The first and most important point to note here is that the Open Source Android based MAD are worldwide in the domain of professional Mobile App Developers. But such is not the case with Apple iOS. Here, iOS is Proprietary, and belongs to the Apple group, therefore all MAD is Server-side and In-house. While this may mean greater Customer care from Apple, in case of malfunction, debugging or application questions, it also means that independent developers do not have any role to play in MAD. The question of learning PL for MAD therefore arises only in the case of Android mobile app development.

ui vs ux
Programming, UX/UI Design

What is UI vs. UX?

We all have heard of the conversations or discussions about how great a UX product is or rather how poor a UI product of a website is. UX and UI are some of the most conflated and confused terminologies that are used in web and app design. They are more often than not placed together as a single term UI/UX design and is viewed from the surface as describing the same thing.

Brief history of user interface

Back in the 70’s in case you wanted to use a computer then you had to use the command line interface. The graphical interface that is found in most computers today did not exist commercially; users were required to communicate through programming languages which required seemingly infinite lines of codes for them to complete the task.

The first graphical user interfaces started to appear in the 1980s and was developed by computer scientist at Xerox PARC. Through the ground breaking innovation, users are now able to interact with their personal computers by submitting commands visually as well as submitting commands through icons, menus, buttons and check boxes.

The shift in technology meant that more people could use the computer since no coding was required and that was the beginning of computer revolution. Apple computer was the first computer to be released in the market that was using graphical user interface successfully. The prevalence and accessibility of computers meant that the interfaces had to be designed with the user in mind. Incase the users were not able to interact with the computer then there was no way that the computers could sell.

Experts opinion

It is not surprising that people have different perspectives in regards to the topic of user User interface and user experience. Graphic design experts have split opinions when it comes to picking the one that is important between User interface and user experience. User experience design is focused on anything that plays a role in solving the problem which either be positive or negative. User interface design is focused on the way the surface of the product looks like.

What is UI design?

UI stands for user interface design and refers to a graphical layout of an application. The user interface consists of texts, images, sliders, buttons, text entry fields and other items that users can interact with including screen layout, interface animations, transitions as well as every single micro-interaction. Any form of visual element, interaction or animation has to be well designed. It is the responsibility of the user interface designer to decide how the application will look like. As a designer you will have to choose the color schemes, button shapes as well as the width of the lines and fonts used to make the texts. User interface designers simply create the look and feel of an application of user interface.

They are often concerned with the aesthetics and it is up to the designer to make interface attractive, themed appropriately and visually stimulating so as to match the personality of the App. The designer needs to make sure that every single visual element serves both aesthetic purposes.

What is UX design

UX stands for use experience and is often used to determine how the users will interact with the application. Is the experience intuitive, smooth, clunky or confusing? It is logical or arbitrary to navigate through the app? Does the app give the user confidence of accomplishing what their tasks or does it look like they are struggling? The experience of the user is determined by how easy or difficult it is to interact with the interface elements and the UI has designed and created. It is important to understand that user experience can be different for different people including users from different countries. This is why large adult dating sites and hookup apps have different versions of their sites and apps for users in the UK and the US than for users in non english speaking countries.

Most people get confused between the difference of UX designers and UI designers. UI designers are usually tasked with deciding how the user interface will look like while UX designers are charged with determining how the user interface will operate. There task basically entail the structure of the interface, and its functionality. Simply put they decide the mechanism of operation of the interface. In case navigation is complicated then a lousy user experience will be very likely.

UX designers also play a role in the creation of wireframe that renders the interface interactions and helps to get the user feedback. It is highly recommended for users to have an understanding of the way users prefer to interact with their applications.

How they interact

User experience and user interface work together in a collaborative process where the user experience enhances operation while user interface creates the appeal. The task of the UX designer is to ensure the work flow of the application while buttons helps in the navigation process and how the interface serves up the information required by the user. The team of UI basically work how the elements of the interface appear on screen.

For instance, let’s say that the design process needs extra buttons on the screen. This basically changes how the buttons will be organized and could require changing the size and shape of the button. The UX designer will determine the best way in which the lay out buttons will appear while the UI designer will design the layout of the design. Constant communication as well as collaboration is required between the UX and UI designer so as to ensure the final look of the interface is clean and operating efficiently and intuitively.

Research

Research very important when it comes to user interface and user experience. It is very important for them to gather as much information as possible in order to assist them in crafting the most appropriate designs that follow a similar approach. Both the UX and UI designers have to carry out thorough research of the sort of applications that needs to be developed. This kind of research is often very involving and interactive and it requires usability sessions where real users will interact with scaled versions of certain functionality as well as some of the visual designs being tested. Simply put, research helps designers build their contributions however, the information UI and UX designers are looking for is might be very different.

Coding, Collaborative Coding, Computers, Programming

How to Collaborate On a Coding Project

Real-time code collaboration has accelerated in recent years. This has affected the way developers work in teams using the same code base. In this article, we will introduce some of the best tools available today.

The tools

I bet my lunch money that every developer has moments in their career when they need to share the code or get help when something is wrong. Typical scenarios can include isolated demonstrations, copying and pasting fragments into lists, or entering the code in a repository.

The following tools (in no particular order) are a selection based on searches, documentation searches and some personal testing.

Atom

Teletype is a free open source package designed specifically for Atom. For those who love privacy, shared data streams are transmitted over an encrypted point-to-point connection. Servers never see your files or editions, which preserves privacy and minimizes latency between you and your employees.

To install the Teletype package, enter the following line from your terminal with the command apm:

apm install teletype

You can also install Teletype from your package manager by typing “teletype” in the search bar. After installation, perform the following steps:

  • Click the antenna icon in the Atom status bar in the lower-right corner of the editor window.
  • Authorize Teletype via GitHub.
  • Select Teletype in the Atom Package menu and select the shared resources portal.
  • Copy the Portal ID, which is located in the lower right corner of the Editor window.
  • Share the portal’s secret identification with employees about your preferred method.
  • Collaborators access their portal by clicking Join after entering their unique portal ID.

Upon joining their portal, contributors will see a new tab in their workspace that will allow them to view and edit the contents of their active editor. Everyone gets their own cursor and everyone can write at the same time, but only the owner can save. Currently, Teletype only transmits text, so combining it with a voice communication application is a good idea. Ultimately, the developers hope to include this functionality directly in the package, along with a long list of other enhancements.

Brackets

With this Adobe Code Editor, you can collaborate in real time with an extension. To begin, follow these steps:

  • Open the folder containing your project.
  • Press the Sync icon in the right toolbar.
  • Enter the same room ID.
  • Click the sync button again to leave the room, join the voice call, or search for the code.

The brackets do not allow access to the microphone by default. However, you can enable voice calls by starting parentheses from the terminal with the following command:

brackets –args –enable-media-stream

By default, the extension points to an author’s server and no code is sent over another server as long as the version of Bracket is compatible with WebRTC (most do).

Coda

Experienced Coda users may not know that there is already a real-time sharing capability. Originally developed by Coding Monkeys, this file share lives since version 1 in Coda. It allows two or more users to share files on a LAN or another user through the computer’s IP address or “shared URL” to connect a remote user with your file. This allows multiple users to work simultaneously in the same file in real time.

First of all, this real-time feature requires users to select the option to share files from the system preferences menu. Once completed:

  • Select the file you want to share.
  • Click Share and press the Bonjour button at the lowest side of your editor screen.
  • Copy the shared URL from the menu > File.
  • The distant user will click on the specified link (open with Coda) and his file will automatically open in his application.

CodePen

If you’re a pro in CodePen, you already know that you have access to “collab mode”, which allows more than one person to release a Pen at a time. When you open the Collab mode, the URL of your pen changes to the address bar of your browser. Copy this provided collaborative URL and shares it with the people you want to work with.

Cloud-based tools, such as CodePen, require developers to move parts or entire parts of the workflow in a host environment. Collab also has a chat feature that allows communication between them during the session. Whenever someone writes, a green border message appears at the bottom of the chat button. Employees can edit and write at the same time, but employees cannot save. Employees can even add external files and change configurations, but not descriptions.

Depending on the plan, you are limited to the number of contributors that can be invited, and only the founder needs a pro subscription; all others can have free accounts or remain anonymous. If you are working with a public pen and want to save the progress, you can click the Fork button to save the exact status at the time of the current progress.

Two heads are always better than one. So don’t be afraid to ask for help. Although programming can often feel like a solitary pursuit. Collaboration is often the best way to learn and improve your skillset. Developing a network of relationships with other coders and programmers allows you access to various strengths and skill sets. Like a fuck buddy who offers hookup benefits as part of the relationship, a coding collaborator can be a friend that shares there knowledge and experience. Relationships are meant to be beneficial and the programming world is different. Being active on forums or working in a co-working space that is tech focused are great ways to reach out and meet other programmers. However you do it. Those relationships with undoubtedly prove very valuable at some point in your coding pursuit.