Posts tagged "programming"

How To Boost Your Coding Skills

July 29, 2019 Posted by Programming 0 thoughts on “How To Boost Your Coding Skills”

In a bid to become a web developer, you’ve read a bunch of tutorials and gotten your feet wet with a couple of guided projects. You’re building solid front ends from the comfort of your terminal. Everything is going great, except that you feel like you’re hitting some kind of wall. You feel like someone pretending to program, that you’ve hardly scratched the surface. Impostor syndrome closes in around you.

Before you panic, know that the fear of not knowing what you don’t know is common. Hence the idiom, tip of the iceberg. What lays under the sea is unknown and can only be discovered by diving. We’ll walk through some of the tasks that can help you bolster your programming skills.

 

Don’t Build Safe Apps

Sometimes, as we begin our journey learning a new language, we fall prey to the familiar. We build the same TODO app three times because we’ve become comfortable with it. We continuously create variations of a basic CRUD app because we can recall the steps from memory and debug issues that arise. We don’t want to dive deeper and grapple with technologies we’d never used before. But diving deeper is the only way to improve. Although learning to code by building is the best way to learn, we still have to make sure that these projects continue to take us out of our comfort zone.

These projects should be somewhat ambitious. You can either start off with an idea, or you can make a list of the technologies you would like to improve on and make the app using them.

Some ideas can include:

  •  A talking JavaScript REPL for kids
  • A fake news identifier
  • A Netflix for books

Those are just a few ideas, but you can be as ambitious as you want. The idea is that you want to be able to learn through trial and error. Learning how to build a REPL may force you to go down the rabbit hole of compiler theory. Suddenly, you’ve gained a deeper understanding of programming languages, which helps to demystify compiler errors.

 

Go the extra mile and build for open source

Going into open source is the best way to experience the wild without the need to land a job. Once there, you will be exposed to how version control works in a team environment. This differs vastly from your personal version control where you wore all the hats. Now, you will be forced to learn how to write code that conforms to a certain guideline. You will also be acquainted with the file structure of packages and learn to skim through them to find the relevant folder.

For all of these reasons, getting into open source can appear daunting. Thankfully, you can ease into it by contributing to minor issues. These issues can be as small as a typo that needs fixing.

 

Dig into the meat of code

As you become accustomed to making small contributions to open source, there comes a time when you should decide to graduate and become a major contributor. To do that, you need to be able to read code. Reading code is one of the best ways to learn to code, especially if you have access to the author(s) of the code to ask them questions. By looking at their code, you can start to see how professional code is written and organized and then emulate that style. Eventually, you’ll be able to recall solutions that you’d seen in other code when you encounter a problem and be able to implement the solution. The reward of that feedback loop will only spur you on to read and understand other code bases. Ideas gleaned from them can be used to help build your own personal projects and will make you a more valuable contributor too open source. Once you’ve gotten to the point of consistent open source contribution, you will be a far cry away from the days of useless TODO apps.

 

 

Please follow and like us:
0

Python is Now Easy to Install on Windows 10

June 10, 2019 Posted by News 0 thoughts on “Python is Now Easy to Install on Windows 10”

2019 has been an excellent year for developers who’ve been bold enough to code on a Windows machine. The announcement of a new Windows terminal and advancements in Visual Studio 2019 have already been welcome additions to the developer toolkit. Amidst the flurry of Windows announcements was an announcement that didn’t make a huge splash. And that’s the fact that Python is now easier to install on Windows. That might not sound like a big deal, but if anyone has tried to install something like PostgreSQL on  Windows, you know about the potential difficulties one can face in making sure files are properly installed and configured.

Personally, I’ve never got my Python installation to work on my Windows machine; though I could’ve troubleshooted the problem, I thought it wasn’t worth the trouble. How many beginners and hobbyists who consider using Python on a Windows machine for experimentation may decide to forgo the language entirely? For many devs, this complaint is met with I-told-you-so’s and Virtual Machine/Linux/Mac recommendations. While those suggestions are worthwhile, PCs and Windows are still a fact of life for many  beginners and hobbyists.

So, when Windows’ Python team say that they’ve made Python easier to install, it’s a pretty big deal. Steve Dower, the Python engineer who wrote the announcement post, mentioned that even professional Python devs find that Windows does little to help Python developers, saying, “Python developers on Windows find themselves facing more friction than on other platforms.”

Again, this problem is due to Window’s history as a platform that catered to corporate professionals and students. The idea that Windows users would ever need a Python interpreter seemed asinine, so why create another security hole by including something that won’t be maintained properly?

It’s due to this reasoning that many Windows users who decided to give Python a go pre-update might have been greeted with this warning screen:

Dower also echoed my point about beginners and hobbyists encountering the above warning of death when he said, “It’s much more likely that someone will hit this problem the first time they are trying to use Python. Many of the teachers we spoke to confirmed this hypothesis – students encounter this far more often than experienced developers.”

So Microsoft fixed this issue by allowing the Python community to release new versions to the Microsoft Store. For example, python3 and python3.7 would be readily available for download. What’s even better is that a python command won’t give the inane warning you would have gotten prior to the May update. Instead, you’ll be directed to the Python store page.

I finally might give Python a try one of these days.

 

Please follow and like us:
0

8 Websites That Will Make You a Better Problem Solver

June 4, 2019 Posted by Programming 0 thoughts on “8 Websites That Will Make You a Better Problem Solver”

One of the most stressful aspects of looking for a developer job is prepping for technical interviews. Often it’s the problem solving questions that keep candidates up late at night. These problems aren’t geared towards your knowledge of a particular language–the recruiter would expect you to  already have a certain level of expertise in a language. Rather, the technical interview tests your problem solving process. How do you think about a problem? Do you communicate effectively, or do you simply internalize a problem?

Though you generally don’t need to have a strong mathematics background to succeed in coding challenges, it helps to know the basics. For example, it would be helpful to know what prime numbers are if you’re asked to list a series of prime numbers in a challenge. Math.com is a great review site that presents a simplified overview of concepts.

Below, we’ve listed sites that provide challenges that will help you sharpen your problem solving skills. But to build good habits, you should practice communicating your thoughts out loud, as if someone were in the room with you.

 

Project Euler

If you’re not looking for the bells and whistles of community based code challenge sites, then Project Euler is the best website to find a range of challenges. There are 663 problems on the site for you to bang your brain against. Many of these problems are fair game in a technical interview.

 

Kattis

Kattis positions itself as a platform for companies, schools, and problem solvers. Problem-solvers specifically get to select from a list of alphabetically ordered problems. The website also offers a leaderboard of its top 100 users. Like many other code competition sites, the top coders can then attract employers.

 

Codility for Programmers

Codility for Programmers is an extension to the technical recruitment platform. The real value of this website is their lesson plan, which walks you through challenges based on topics like sorting, time complexity, and search algorithms.  Every once in a while, Codility also offers challenges that can earn you a “Codility award.” The submissions are tested for correctness and performance. Awards of silver and gold are given to the runner up and top solution respectively.

 

Hacker Rank

Hacker Rank is the grand daddy of code challenge websites. If you have the misfortune of stumbling upon the website’s front page, it can be hard to notice that fact due to the way it markets itself as a job matching site. If you make your way to Hacker Rank’s dashboard, however, you’ll find a trove of tutorials that focus on algorithms, data structures, and mathematics. Due to the sites popularity, gaining recognition on the site by participating in competitions can also get you noticed by employers.

 

Tech Gig

Tech Gig is structured like most other code challenge websites. Though, the barrier to entry for Tech Gig is much more apparent. Hacker Rank requires a login to access challenges and practice problems, but Tech Gig requires a log in from the get-go. The only options for registration are professional and student–and nothing in between. Otherwise, the website offers a nice self evaluation mode that can help inform you about the skills you need to improve upon.

 

Code Chef

Code Chef is an excellent site for competition due, in large part, to their community. There are usually a few contests to whet your problem-solving appetite and these contests can be hosted by anyone in the Code Chef community. What’s also great is the Stack Overflow-esque question board that sits on the home page, reminding you of the help that the community is willing to offer to its struggling members. There’s also a practice section that groups problems into beginner, easy, medium, and hard.

 

Leet Code

What makes this website stand out from the rest is that the community offers real world interview questions for you to sink your teeth into. These questions are divided into system design, object-oriented design, operating systems, algorithms, databases, and shell. The practice challenges can be accessed immediately without the need to log in. You can get right to solving challenges that range from easy to hard. Another nice bonus is the built in editor that allows you to do everything in the browser. It must be noted that certain challenges require a premium account to access them, but those premium challenges are few in number.

 

Code Wars

Of all the problem-solving/challenge sites listed here, Code Wars has the biggest barrier to entry; you have to prove that you know the rudiments of your language of choice before you can proceed. However, the challenge is incredibly easy and functions as more of an inside joke. Once you sign up, you have the option of choosing a skill level ranging from learner to senior developer. There are a bevy of “katas” or challenges to choose from. Challenges are devised by the community. Code Wars provides arguably the best problem solving platform. You have a customizable editor along with pre-written tests that help you get into a real world problem-solving mindset.

 

Please follow and like us:
0

What it Means to Code

June 3, 2019 Posted by Programming 0 thoughts on “What it Means to Code”

Coding is often a word that’s thrown around to describe the process of building software, as if the act of typing out characters is what truly makes an app come to life. But coding really isn’t about computers, it’s mostly about people. In terms of the concept of coding(sitting at a desk with your eyes glued to code), we can roughly say that a quarter of coding consists of writing actual lines of code. A blogger conducted an informal study of her internal network among 65 developers and found that they roughly spent 25% of their day actually coding. That percentage may fluctuate day to day, of course, depending on circumstances; e.g. a game developer hitting crunch time.  Still, on average, most of a programmer’s time is spent debugging their own code and the code of other humans, maintaining and rereading code that other humans wrote, and meeting with other humans to talk about building stuff that other humans would enjoy using. And then you have your co-workers that you have to deal with. They have egos, flaws, different perspectives.

You also have coding paradigms and philosophies, which are very human in nature. A developer who has clout within a company can throw his weight around to enforce a particular technology stack that will effect the way you code. The company itself may strongly adopt a functional paradigm which eschews the notion of state-changing behemoths. The computer hardly cares about your company’s decision to use a particular paradigm, but we humans care. We care to such an extent that we’ve created Agile, Lean, DevOps–just to name a few methodologies. All of them influence the way you engage with your code by dictating time spent collaborating with other team members.

Programming languages also embody a certain mindset that centers around how people like to do things. For example, the Ruby philosophy is all about having a variety of ways to solve a single problem. There’s a wild, fast nature to the Ruby on Rails environment that made it popular with boot camp students and startups. On the other hand, Python has a more measured philosophy that tries to enforce “one way to code.” So, it’s not surprising that scientists have created a community around Python. Theoretically, Ruby can easily be used for data science. But since coding is about people and the communities that they form around languages, Python has the tooling that makes it the de facto language for data science.

The problem comes when we forget that coding is not all about computers. That’s what leads to the one line wizardry that looks clever, but takes a page of documentation to explain how the code actually works. It would be nice if the computer could reply back and explain the code to us in plain English. Unfortunately, that’s not the case. A human understanding of code dictates that code should be written for the next person that will either have to review or maintain it. That means providing thorough documentation.

Some people take that to mean every line of code must be accompanied by a paragraph of explanation. Many humans also don’t like reading technical jargon. If every line of code needs explanation, that calls for some refactoring. Crafting elegant solutions should not only be synonymous with the optimal O(logn), but should also be synonymous with high readability.

The human-nature of code extends beyond coders to the people who benefit from the code. Facebook uses algorithms that can suggest articles in your news feed based on  your interests. You can find the nearest fast food restaurant or just stay at home and order some grub. Everyday people use “algorithms” to explain Youtube videos popping in and out of their feeds or Google ads tailoring ads based on the back scratcher he/she bought the other day off Amazon. Code has entered into our dialogue-literally; audio processors have allowed the likes of Alexa and Google Home to become a part of our existence.

Robert C. Martin, author of The Clean Code Blog, details the responsibility programmers now have towards their fellow humans:

It is well past the time that we programmers can safely isolate ourselves from the rest of the world. We programmers must no longer hide in our little techie bubbles. The code we programmers write matters. It matters to the hopes and dreams of our society and of our civilization. It matters to people walking their bicycles across the street. It matters to anyone and everyone because the code we programmers write lubricates, enables, enhances, and simplifies virtually every aspect of daily life. From something as small as a young mother checking her baby monitor, to something as large as international nuclear-weapons policy, and interplanetary travel, our code matters.

Since we code for people, we have to write safe code. Defensive programming ensures that the code you write has minimal bugs. That often means writing clean code so that the bugs themselves can be more easily traced. The code should be nearly fool-poof against extreme cases and weird input.

So, all that said, what does it mean to code? Well, in 2019 coding is about writing for your fellow developers and your customers.

 

 

Please follow and like us:
0

What is Technical Debt?

May 28, 2019 Posted by Programming 0 thoughts on “What is Technical Debt?”

Technical debt is an industry buzzword used to describe a design process that, for example, implements code that doesn’t scale. The idea is that by taking shortcuts now to release a product on time, you can deal with maintenance at a later date. That means spending more time on the back end to fix the problems caused by taking a shortcut. One of the more infamous examples of a company taking on technical debt is Oracle. In its nascent years, Oracle was so aggressive in its marketing that it would sell products that it did not have ready. The company’s engineers were forced to rush products into production. Oracle 6 shipped with a ton of bugs. Oracle’s stock plummeted due to this, requiring the engineering team to spend time refining the product.

The effects of technical debt can be damaging to consumer-facing products where customer satisfaction is required to maintain profitability. Yet, one may inquire, why is the term used so liberally if its effects can be so detrimental? The answer is in the cost/benefit analysis that goes into managing technical debt. Ward Cunningham, the man who coined the term, used the analogy of financial debt to illustrate the problems faced by technical personnel. In the financial world, debt can actually be a good thing if one knows how to manage it. The advantages gained by borrowing money for a venture and the potential long term profits outweighs the momentary lapse into debt.

Applied to the technical world, that means writing code with dependencies or tools that allow you to scale a project quickly. For example, a web startup may decide to use Ruby to begin operating immediately with simple rail commands. In this scenario, the debt here is in speed. Ruby and Ruby on Rails is known to be slower than most other languages. When this company starts gaining large amounts of traffic, they will have to address bottlenecks that can only truly be resolved if  they optimize their back end with C++. That means either hiring more developers or training your current developers to work on a back end built with C++.

That’s a solid example for a controlled technical debt. The company used an inexpensive process to gain market share, and then they payed off the debt once the time came to do so.The problem that comes with talking about technical debt is that not all debt is created equally. Oftentimes, as Uncle Bob and Martin Fowler point out, technical debt is confused with hacky code. I remember the first time learning about technical debt.  A coding instructor was casually talking to us about his exploits in the wild. He was hired by a company to build software. Rather than writing code that scales(ie readable code), he just used whatever means were available to him to produce a working product. He called his method technical debt because when his code was audited, there was no way it could go into production without serious refactoring. In the end, he was fired.

Many would argue that that is not technical debt–it’s technical ruin. What my instructor had done was allow an insurmountable amount of cruft to pile up. Fowler defined cruft as, “deficiencies in internal quality that make it harder than it would ideally be to modify and extend the system further.”

At what point does technical debt cross the line? Fowler split technical debt into quadrants. You have the deliberate and inadvertent debt. For many of us, inadvertent debt is just part of the learning process. That’s the automatic debt that accrues when you’re working your way through a problem. We may write code that is far too procedural when there’s a faster solution. It’s once we find the solution that we learn how to optimize it. And then you have the reckless debt.

The reckless debt is like the reckless driver–there’s bound to be an accident. Reckless debt means writing clever one line solutions that will befuddle other developers who have the misfortune of maintaining your code. It means writing code without planning and hoping everything turns out alright. It means closing your eyes and hoping you won’t have to deal with a monster of a problem that can potentially tank your project.

 

image credit:

 
unsplash-logoAlice Pasqual

Please follow and like us:
0
pair programming

How to Make Pair Programming Fun

May 20, 2019 Posted by Programming 0 thoughts on “How to Make Pair Programming Fun”

Pair programming is a bit like the buddy cop movies you’ve seen out there. You have two programmers working at the same workstation trying to complete a particular feature or get some tests to pass. Unlike the buddy cop movies, bad pair programming techniques can lead to frustrating scenarios. Whether you’re pairing with a remote developer or someone from the office, there are a few basic guidelines to follow to ensure that the pairing session goes smoothly.

 

1. Put your heads together(not literally, unless you want to)

If you don’t agree about how to go about completing a task before you start pairing, you’ll only create stress as you code. The best way to introduce your ideas is to first employ some soft skills. Clear the air by talking about anything that may be troubling you so that your fellow programmer doesn’t think that you’re grimacing at his code when you’re really just pissed about something else. The introductions can be as formal or as informal as needed,  just as long as both of you can get on the same page mentally. Once you’ve done that, it will be easier to express ideas.

 

2. Set up a plan of attack

The productivity parlance “eat that frog” refers to doing your worst(most difficult) task first. When you’re pair programming, you’re probably better off doing the opposite. When I’ve pair programmed, I’ve found that the most exhaustive bit of the task of pair programming was in having to solve  difficult problems. The patience and communication involved in working together can be draining. If this is your first time pair programming together, it will be much better to work on simpler tasks to grow accustomed to working with your pair.

Break down the task into smaller components and proceed from there. However, if you feel that the both of you are pairing rockstars, it may be beneficial to tackle difficult problems early on when you still have the energy to take them on.

 

3. What’s driving and  navigating?

Aside from deciding what you’re going to be working on, you have to figure out how you’re going to work together. In pair programming, the roles of the pairs are divided into a driving and navigating role. Theoretically, the driver is supposed to be the adventurous road tripper who isn’t really sure about the layout of the land and loves asking for directions. The navigator is supposed to be equally unsure, but the access to information should allow her to help the driver.

Why is this theoretical? Well, depending on the coder, the driver could be someone who starts typing code without communicating. That leaves the navigator with nothing to do but check social media. That’s the worst case scenario of a pair programming session, but it doesn’t have to end up this way if the driving and navigating roles are properly defined.

Some of those new to pair programming may think of the driving role in the way most people think of driving: full control. Your job is to clearly communicate what driving and navigating means to both of you. Should the driver explain what they’re about to write before they write it? Or can they go ahead and write code, then talk about what they wrote afterwards? How much input should the navigator have in writing code? Is the driver mostly a stenographer who receives input from the navigator?

These questions don’t have to be answered. The point is to remind yourselves that the driving role isn’t a one woman/man show. Depending on the nature of the problem, the driver’s role can change. What is most important is that there is constant communication. An effective driver is someone who talks about the problem and possible solution out loud so that the navigator can chime in. A skilled navigator could even optimize a certain solution or refactor the driver’s code on the fly.

The navigator shouldn’t be demanding, however. Suggestions would be received much better if posed in a question. Syntax errors and typos can be pointed out at the last possible moment to give the driver space to breathe. In my pairing sessions, we had fun with typos and syntax errors, turning them into small jokes to lighten up the mood. At the end of the day, the driver may already feels a lot of pressure to write good code in front of their colleague. If the navigator is demanding, the driver’s worst fears may be realized, leading to an unproductive session.

 

4. Who’s driving and who’s navigating?

Once the roles have been defined, you can then decide how to best split up the task. There really isn’t a bad way to split up tasks. There are formal definitions like ping pong-ing where roles are switched upon completion of a specific task(it’s technically not a drive-navigator style). For example, the driver writes a test for a module and afterwards the roles switch. The new driver tries to make that test pass.

It doesn’t matter how frequently you switch as long as you switch. Switching roles is one of the biggest advantages of pair programming because, in a way, it reduces the pressure of sitting alone for hours hunched over your keyboard trying to solve a problem.

One great way to trigger role switches, if the nature of the task doesn’t provide obvious switch cues, is to set a timer. Every thirty minutes could trigger a switch. Be sure to take breaks in between as well to get some time to yourself.

 

5. Who gets the credit?

Thanks to git, there’s no need to fight over whose name shows up in the repo. When you create a commit, add aCo-authored-by: name trailer under the commit message. To find out how to do that, check out this GitHub help page.

 

6. Aftermath

So, you’ve made your last commit for the day. Should you just end the session with a perfunctory good job? While that may seem like the nice thing to do, it really isn’t. If something didn’t go as you expected, it’s better to voice those concerns to allow the pair to fix those problems. The way to introduce those concerns is to first talk about what when well. Then, you can talk about what you can improve on individually or as a pair. Afterwards, you can mention specific issues you may have had with the pair.

If the feedback is given in the spirit of desiring excellence, then it will more than likely be taken in stride. The pair would at least respect you for you honesty even if they may disagree with you.

 

So…

Hopefully, these steps have given you a blueprint about how to go about pair programming effectively. Pair programming can be a lot of fun if you do it right. You can learn a lot about the person next to you as you hunker down to solve problems. Don’t be surprised if you start sharing a few anecdotes or if a variable name triggers a discussion. Laying down guidelines may seem dull, but once you’ve set up a parameter, you’re free to play knowing that you’re both on the same page. Many site the disadvantages of pair programming, but there’s no doubt that, if done right, pair programming makes staring at code a whole lot more fun.

image credit:
Alvaro Reyes

Please follow and like us:
0

Books That Will Make Programmers Think Outside The Box

May 16, 2019 Posted by Programming 0 thoughts on “Books That Will Make Programmers Think Outside The Box”

Programmers often have to solve a variety of problems that range from something simple like fixing a bug to something more complex like writing a search algorithm for a parking locator app. Different scenarios require different methods of approaching and fixing the problem. That means that a programmer has to have a tool set of mental models to help get them through challenges that arise. For an extremely complex problem, those who are skilled at using first principles won’t be trapped by complexity and will immediately start whittling away the problem into its essential parts. The other parts that are fuzzy can always be researched, or can be handled by someone with more expertise.

Mental models expand beyond a single domain into several other fields; an architect may look at the design of a twisting skyscraper and have one thought while a physicist may look at that same skyscraper and have another thought. Things get even more interesting when you add a biologist into the picture and they notice that the peak of the tower resembles that of a bird’s beak. There are a bevy of problems that had to be solved in creating the skyscraper–someone with the ability to tap into all three of these mental models would be able to come up with unique solutions. The person doesn’t have to be an expert in all of the domains either.

An example of mental models put into practise in an engineering setting are Japan’s bullet trains. For a while, they couldn’t solve the problem of the explosion of noise that would erupt when the trains went in and out of tunnels.  Not until a birdwatcher and engineer called Eiji Nakatsu arrived on the scene with brilliant insight.

He reduced noise by redesigning the rig that connect the train to the wires above to mimic the wing of an owl and redesigned the nose of the train so that it mimicked the nose of a kingfisher. The result was a faster, quieter train.

Let’s look at a programmatic setting. You can combine psychology and systems knowledge to create addictive apps that solve the common problem of, “how do we get users to stay on this app?”  à la Facebook. Psychologists who are well aware of incentives and the feedback loops that engineers can reproduce with their systems knowledge use their own mental models and see Facebook and similar platforms as a source of addiction. Ethics aside, you can argue due to tapping into mental models, Facebook’s programmers have largely solved the retention problem.

There’s no doubt that the application of mental models in real life situations can produce noticeable results. The thing is, knowing how to apply a mental model to a given situation takes a lot of experience. Often, those who solve problems don’t need to say that they used X mental model to solve said problem. Their thought process is intuitive. It takes steps to reach this level of intuition. And the first step is to familiarize yourself with mental models that can help you in your day to day problems. There are tons of books out there that cover a slew of mental models. Sprinkled in this list are books that are more “programmer” oriented. I’ve highlighted the books that cater more to the average programmer.

  • Thinking in Systems: A Primer by Donella Meadow
  • The Fifth Discipline by Peter M. Senge
  • An Introduction to General Systems Thinking by Gerald Weinberg
  • Sources of Power: How people make decisions by Gary Klein
  • Thinking and Deciding by Jonathan Baron
  • Super Thinking by Grabriel Weinberg
  •  The Model Thinker: What You Need to Know to Make Data Work for You by Scott E. Page
  • The Great Mental Models by Shane Parrish
  • How to Solve It: A New Aspect of Mathematical Method by G. Poya
  • The Art and Craft of Problem Solving by Paul Zeitz
  • Object-Oriented Design Heuristics by Paul Zeitz
  • The Decision Book Mikael Krogerus
  • Analysis Patterns by Martin Fowler

 

image credit:

Susan Yin

Please follow and like us:
0
scientist

8 Programming Languages That Scientists Use

May 10, 2019 Posted by Programming 0 thoughts on “8 Programming Languages That Scientists Use”

There are a lot of general purpose programming languages out in the wild that can theoretically do anything that another language can. For example, Python and Ruby are pretty identical languages. The only reason one has become the dominant language of data science is because of the ecosystem that developed around it. Now, Python is nearly synonymous with data science. But there are other more specific programming languages that cater to a field of science. These are the languages that are considered niche. Those who use them swear by them. To outsiders, you might as well be speaking greek.

Here are eight programming languages(not named Python) that scientists use.

 

MATLAB

Image result for matlab

credit: Mathworks

Matlab is a programming platform developed by MathWorks to allow for matrix manipulations, plotting data, implementation of algorithms, creation of users interfaces. The language is used mostly by students in university level courses. Matlab comes with an IDE, debugger, and a suite of tools and built-in methods, like most other languages.

 

FORTRAN

Image result for fortran

Though Fortran may seem like a relic today(I posted an article about how it was all the rage in the 80’s), it’s still chiefly used by physicists. The main reason for its continued existence is it’s speed and flexibility when it comes to built-in parallelization and arrays. The language is used along with C++ for high computation tasks that involves modeling stars and galaxies, climate, and electronics.

 

ALGOL

Image result for ALGOL

This language is a bit ancient and perhaps only in use in certain mainframes–even then its superset ESPOL would be in use. Why ARGOL is relevant now is that it lay the groundwork for languages like Simula, Pascal, C, and Ada. The reason for ARGOL’s influence lay not only in its syntax but its extensive use in academia. Since ARGOL became the lingua franca of algorithmic description, later works would continue to add new ideas to the world of language and algorithm development, one of them being the ALGOL 60 Report edited by Peter Naur. The grammar description later became standardized and was called the Backus-Naur Form.

APL

Image result for apl programming language

The APL programming language is a programming language for the mathematically inclined individual. Like many other programming languages used for mathematical modelling, the multidimensional array is the primary data type of this language. Unlike many other computational languages, APL is hellish to read. The language attempts to abstract complex mathematical functions into representative symbols. In so doing, skilled APL programmers can increase productivity.

 

J

Image result for j programming language

credit: iTunes

J is what you get when a developer looks at the crazy symbols in APL and says, “I can fix that.” Instead of relying on foreign symbols, J relies on the tried and true ACII character set. Still, J is notorious for its conciseness. One line of J can do more than one page of code in many other languages.  The language is used for mathematical and statistical programming.

 

 Julia

Image result for julia programming language

credit: Wikipedia

Julia has the look of a dynamic scripting language, but it’s multiple dispatch system gives Julia the flexibility to be both dynamic and strongly typed; functional and object-oriented. This means Julia can be applied to various applications. The very ethos of Julia is flexibility. It’s founder, Professor Alan Edelman, wanted Julia to have “the speed of C with the usability of Python, the dynamism of Ruby, the mathematical prowess of MatLab, and the statistical chops of R.” While the language may not have met those loft goals, the principle behind its design makes Julia a handy Swiss Army knife for data scientists.

Wolfram Language

Image result for wolfram language

credit: Wolfram

The Wolfram Language, formerly known as Mathematica, is a language that represents data like strings and integers as symbols. It’s highly symbolic nature is great for representing large data in a clean, readable way.

 

R

Image result for r programming language

 

The R programming language is a language centered around statistical computing. According to the R website, R is “an integrated suite of software facilities for data manipulation, calculation and graphical display.”

 

 

image credit:

 

Lucas Vasques

Please follow and like us:
0

Best Text Editors and IDEs For Programming In Your Favorite Language

April 30, 2019 Posted by Programming 0 thoughts on “Best Text Editors and IDEs For Programming In Your Favorite Language”

Editors are a fact of life once you coding either becomes a serious a hobby or a full time job. Using the appropriate text editor or IDE can come down to preferences or the specific language you code in. Personally, the three editors I’ve used extensively are notepad++, Sublime, and Atom. I found Notepad++ to be the least readable and customizable. Sublime was an excellent substitute and has a large number of extensions and macros that you can add to make development a breeze. Though, at some point I decided to switch over to Atom after being constantly bugged to pay for Sublime. I found Atom to be the best. Its UI is intuitive and package/theme installation is extremely easy to implement.

Those are only three editors. There are many more editors out there in the wild. Below is a list of editors you can experiment with.

test
 

 

Atom

“A text editor is at the core of a developer’s toolbox, but it doesn’t usually work alone. Work with Git and GitHub directly from Atom with the GitHub package.”

Atom is a convenient text editor for anyone who uses GitHub.

 

Visual Studio Code

 

vscode

Visual Studio Code is a code editor that allows you to debug, use Git control, and extensive customization.

 

 

Android Studio

 

The code editor for Android developers.

 

Sublime Text

 

Sublime Text is a text editor for code, markup and prose. It’s simple and lightweight.

 

Vim 

 

“Vim is a greatly improved version of the good old UNIX editor Vi. Many new features have been added: multi-level undo, syntax highlighting, command line history, on-line help, spell checking, filename completion, block operations, script language, etc. There is also a Graphical User Interface (GUI) available. Still, Vi compatibility is maintained, those who have Vi “in the fingers” will feel at home. See runtime/doc/vi_diff.txt for differences with Vi.”

 

Neovim

Neovim is a project that seeks to aggressively refactor Vim in order to:

 

 

Emacs

 

An extensible, customizable, self-documenting real-time display editor. Emacs is the most customizable editor on this list because of a programmers ability to write their own extensions.

 

Spacemacs

Spacemacs is a marriage between Vim and Emacs. If you can’t decide which one to use, you can integrate the features of both editors into a single editor.

 

Nano

A simple Vim-like editor.

 

 

TextMate

A Mac-only text editor.

 

Notepad++

“Notepad++ is a free (as in “free speech” and also as in “free beer”) source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GPL License.”

 

 

Jet Brains’ IDEs

 

Apart from editors, IDEs offer platform-specific tools for debugging and compilation of certain languages.

IDE for Closure

General purpose IDE

JavaScript IDE

PHP IDE

Python IDE

Ruby IDE

 

 

Please follow and like us:
0
browser plugins

36 Browser Plugins You Can’t Live Without

April 26, 2019 Posted by Programming 0 thoughts on “36 Browser Plugins You Can’t Live Without”

Browser plugins simply make life easier for software developers who constantly need to test scripts, switch through tabs, and read darn good articles that help them get better at their craft. Juggling all of these priorities without leveraging the right tools can make the development experience that much more cumbersome. So, below, we’ve listed 36 browser plugins that you won’t be able to do without once you use them.

 

 

BlazeMeter | The Continuous Testing Platform

Test your script’s  performance easily.

 

Bug Magnet

This tool allows you to test edge cases of your app.

 

Check My Links

Broken links are bad for SEO. This tool tracks all of your links.

 

Exploratory Testing Chrome Extension

You can take screenshots and document detailed bug reports with this extension.

 

Note Anywhere

You can stick notes on web pages that will persist when you visit them again.

 

Page load time

The plugin’s name does as its name suggests: it checks the load time of a page.

 

Screencastify – Screen Video Recorder

You can use the free version to screen cast code or any particular bug that’s giving you problems.

 

WhatFont

If you want to imitate the font on any part of a web page, you can check the specific font type with this plugin.

 

Wappalyzer

If you want to know the tech stack of a competitor, wappalayzer gives you the insights you need.

 

CSS Peeper

You can exract useful CSS info from any website.

 

Funkify the Disability Simulator

This stimulates the disabilities of certain users so you can better implement accessibility options.

 

Awesome Screenshot

A great plugin for posting high quality screen shots onto Slack.

 

Initab

This plugin solves the tabbing problem by creating an interface that puts everything you need all in one place.

Extensions Reloader –

Helps with extension development by allowing you to quickly update (reload) your unpacked extensions

 

Refined GitHub

improves GitHub’s interface

 

User-Agent Switcher for Chrome

This can come in handy for testing front end code.

 

uBlock Origin

This offers security by blocking ads and filtering data.

 

Tree Style Tab

You can operate tabs in tree mode if you’re a tab hoarder.

 

ColorZilla

Color picker from anywhere on the page

 

LastPass

Password manager

 

GitHub SLOC

shows the number of lines in a repo, somehow, to me, it feels important

 

Toolkit for YNAB

youneedabudget.com is an amazing budget planning tool, this is an extension to make it even better

 

axe

Accessibility testing in Chrome Developer Tools

 

VisBug –

Open source browser design tools

 

Sizzy –

Tool for developing responsive websites crazy-fast

 

Empty Cache Button

Toolbar button to empty the browser cache.

 

Html Validator

HTML validation inside Firefox. The number of errors of a HTML page is seen on the form of an icon and details in a developer tools tab.

 

Open With

Quickly open current web page in another browser.

 

Bookmark Tab Here

Adds context menu item ‘Bookmark Tab Here’ to Bookmarks Menus as an alternative bookmarking method.

 

Easy Youtube Video Downloader Express

Seems to be the best of the add-ons to download video from youtube.

 

Feed Preview

Because RSS feeds are not dead.

 

Firefox Multi-Account Containers

If you have multiple accounts on the same site, then this can really save you having to log out and log in again to switch accounts all the time.

 

Markdown Here

If you are a markdown aficionado this lets use write in markdown then click a button to toggle to formatted. Useful for web-based email (gmail, etc) and other sites like blogger or wordpress.

 

SiteDelta Watch

Regularly monitors a page for changes.

 

Cookie AutoDelete

When a tab closes, any cookies not being used are automatically deleted. Whitelist the ones you trust while deleting the rest.

 

Facebook Container

Prevent Facebook from tracking you around the web. The Facebook  Container extension for Firefox helps you take control and isolate your
web activity from Facebook.

 

Resources: 

Image sourced from hostsorter.com

Please follow and like us:
0