Technology

March 18, 2021

Software Development: Tools of the trade

There are a lot of tools that will make a developer's life easier and also more productive, I want to share some of them that have helped me a lot in my career.

For a developer there is more than just the language that he/she is using to create his applications.

There are a lot of tools that will make his life easier and also more productive. I will try to mention the tools that have helped me a lot when programming, debugging or have made me feel like a hacker.

Regular expressions

I think that this is a must for all programmers, since there is an implementation on every language out there. So what is a regular expression (that we will call regex)? For a long definition there is wikipedia, but just for the sake of knowing is like having a searcher with steroids. It helps find any text but with a complex syntax. For example let’s say that we want to search for all the strings that are being used inside the code, you just have to use a simple regex for that and also it will extract all those strings, and it will ignore escaped quotes so you will get all the string constant.

 (["'])(?:(?=(\\?))\2.)*?\1

Also a regex is used to match a text, to verify that it conforms a certain pattern, instead of verifying the position of certain characters or using state machines you just have to use a regex. For example the most used in my opinion is to verify that an email is a valid address.

^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$

The previous regular expression is a simple one to verify an email address, of course there are some caveats, if you want a really good regex for email addresses there are more complete ones, it all depends on the complexity or security for your verifications. For example for the same email address verification.

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

python scripting

Scripting languages

When you are programming there are sometimes when you need a smaller program for different tasks, create/modify/delete files, data, sample data, test cases. Sometimes you don’t want to create an extensive application just for a few hours of use, so a scripting language is the solution. There are a lot of languages to use, in my case the ones that have helped me a lot are: Python and Perl, also if using a terminal Bash and Power shell (depending on the operating system you are using) are a great help. An example could be that you want to generate random names for you to insert on a database (we will focus only on creating the random names) so you will have a python script like this:

script example 1

Or maybe you just want to sniff the network for the data that is being transmitted:

script example 2


As you can see there is no limit to what you can do with a scripting language. Then there is the scripting that comes with your OS (Operating System), such as Bash or Power shell, that you can use to make a lot of different things with it, from renaming files recursively to also obtain information from the computer. If you are on windows you can try this, start power shell then type:

start "https://www.youtube.com/watch?v=dQw4w9WgXcQ";

And you will start watching a youtube video. If you make a script that runs in the background you could make sure that the video starts at a certain time or when some action is performed in the computer.

software development file editors

File editors

Of course a file editor is a must if you want to code. Maybe you are using an IDE, that is just fine, most of them let you open several types of text files that are not code files. But there are also some file editors with nice features, so you can edit a lot more of those and other files. Let’s say that you want to create or modify the script files that you have created, also the data files that you are using to test your main application, or also to take notes.

Sometimes there are limits to the kind of files that you can modify, so there are a different kind of file editors to use, these are hex editors, with them you can view or modify binary files, yes of course you have to know what you are doing because you can mess up the file completely, but they are very useful, let’s say that you have a file that has an image extension (jpg, png, gif, bmp) but for some reason you are trying to open it and it shows an error, you don’t know why, it was supposed to work, so you open the file with the hex editor and view the first part of the file, and now you see why, it has the structure of a zip file, so now you change the extension to zip and try open it, now it works and you see that the image file is inside the compressed file.

Lets watch some examples, we can see the header of a zip file, it contains the letters “PK” that are common of ZIP files, and then for the image file you can see some weird characters shown with their hexadecimal representation “FF D8 FF E0” followed by “JFIF” that are common of JPEG image files. You can find on the internet the header and pattern of content for almost all the existing file types.

And for a more hackerish job, these hex editors also have access to memory addresses and direct disk access, so you can view or modify the data in it. Now if you join all these tools you will have a lot of fun doing great things.

Do you have any Software Development needs? Contact us here and let us know how we can help.

Case Study from Arkusnexus
Israel Cabrera
Israel is currently working for Semantic AI team as a developer. He loves to research and develop new solutions. His hobbies include astronomy, robotics, electronics and photography, STEM.
icabrera@arkusnexus.com
RSS feed
Subscribe to our feed
Back to More ContentMore From this Author
HomeServicesAboutBlogJoin UsContact
Privacy Policy
San Diego:
3065 Beyer Blvd B-2 San Diego, California 92154 +1-619-900-1164

Los Angeles:
530 Technology Drive Suite 100 & 200 Irvine, California CA 92618