About
Hi, I am a Full-Stack Software Developer with a strong focus on backend development, particularly in the Elixir ecosystem for IoT-based applications. My primary expertise lies in designing, developing, and maintaining web applications using Phoenix, Elixir, Phoenix LiveView, and OTP.
My journey in programming started back in 2009 with C/C++ before pursuing my bachelor's degree in Mechanical Engineering in 2010. Throughout my studies, I worked on diverse projects, including line-following robots and solving algorithms for numerical methods and machine design problems using C++ and Matlab.
After graduation, I joined two different companies in their R&D departments, where I tackled challenges using C++, C#, and Visual Basic. However, my passion for programming grew, prompting me to switch to a career in Software Development. I began as an Application Support Engineer at a software development company, gaining experience in C#, VB, AutoLisp, ASP.NET, SQL, JavaScript, and other application-specific languages. Eventually, I was promoted to a Software Developer role, primarily working with C# and ASP.NET.
To solidify my career change, I pursued a Post Graduate Diploma in IT from Jahangirnagar University, Bangladesh, graduating in 2019. Following that, I enrolled in a Masters in Software Engineering program at the University of Tartu, Estonia. During this program, I immersed myself in various areas of Software Engineering, such as Enterprise Software Integration, Big Data analysis, Machine learning, Game Development, Virtual Reality, Software Testing, Software Project Management, and Business Process Management.
Throughout my academic journey, I worked on diverse projects involving technologies like Elixir, C#, F#, Go, Java, React, Vue.js, Blueprint Script for Unreal, and more. This experience significantly enhanced my adaptability to different technologies.
Besides my academic pursuits, I also worked as a freelance developer, taking on interesting web and desktop-based projects. This exposure to different domains and technologies fueled my passion for continuously learning new technologies and solving complex problems with them.
Overall, I bring a wealth of experience and a strong dedication to staying up-to-date with the latest trends and advancements in the software development world. I am always eager to embrace new challenges and contribute my expertise to innovative projects.
Experience
Full Stack Software Developer
GlobalReader OÜAt GlobalReader OU, I am working to create and maintain IoT-based real-time applications with Elixir based Phoenix MVC Framework, LiveView, and Ecto. My contributions include developing efficient real-time dashboards for multiple IoT devices, automating invoicing services, and implementing live help support. I actively monitor system performance and collaborate in code reviews, bug fixing, and providing custom features for clients.
Software Engineer
BJIT Ltd Software Tools DevelopmentI have played a crucial role in enhancing productivity and data processing for mechanical designers. Notably, I had worked to optimize the Flow Sheet Builder tool (utilized for creating mechanical process flow drawings in AutoCAD) by 60% reducing its running time through redesign, strategic code restructuring using C# and VBA. I excelled in software testing, debugging, and seamless integration with application-provided APIs, working proficiently with MSSQL and PostgreSQL databases. Additionally, I took pride in guiding and mentoring fellow teammates on technical aspects to ensure project success. My time at BJIT Ltd. was marked by valuable contributions and a dedication to innovative software solutions.
Application Support Engineer
BJIT Ltd Application SupportAs an Application Support Engineer, my primary responsibility is to provide comprehensive support and enhance productivity for modern CAD software. I achieve this by developing valuable tools and add-ins that bring about significant improvements in productivity for our clients. These enhancements aim to streamline workflows and optimize the overall user experience with the CAD software. Through my technical expertise and dedication to delivering efficient solutions, I ensure that our clients can make the most of their CAD software, ultimately leading to enhanced productivity and a seamless user experience.
Projects
Quality Check Manager
Quality Check is a crucial step in the manufacturing industry that ensures products meet the required standards of quality. To streamline this process, GlobalReader has developed the Quality Check Manager, an add-in feature for their operator or shopfloor feedback application. This tool empowers users to create and manage quality checklists tailored for different workstations.
The Quality Check Manager offers a flexible range of triggers for initiating quality checks. These triggers can be based on various factors such as the number of manual production entries, the count of sensor inputs, specific time intervals, or predetermined times of the day. As the system evolves, additional trigger types can be easily incorporated to cater to specific client needs.
As the primary architect and implementer of this feature, I utilized Elixir, GenServer, Supervisor, Registry, Phoenix, LiveView, and Ecto in the implementation process.
Real-time integration with Monitor ERP system
Monitor ERP is a popular ERP system used by many manufacturing companies. GlobalReader has developed an integration with Monitor ERP that allows users to use GlobalReader's ecosystem and view real-time production data in the Monitor ERP system. This integration is achieved by using the Monitor ERP API to send production data to the Monitor ERP system.
As the primary architect and implementer of this feature, I utilized Elixir, GenServer, Phoenix MVC API, LiveView, and Ecto in the implementation process.
Live help support
GlobalReader's Operator is a shopfloor feedback application widely adopted by more than 200 companies. This application serves as an interface with the production equipment, enabling operators to input essential production data. However, it also offers a helpful feature for operators in case they require assistance from other departments. For instance, if there is a shortage of materials, operators can seek help through this feature, ensuring a smooth workflow.
When an operator needs assistance, they can send a customized message via the Operator application. The system is configured in advance to direct these messages to the relevant departments. The messages can be dispatched through various communication channels, such as SMS, email, or app push notifications, ensuring that the right people receive the information promptly.
To implement this feature, I utilized Elixir, LiveView, and Ecto in the implementation process.
Buddi
Buddi is a utility application designed to support day-to-day educational needs. Initially inspired by my research on Open and accessible education with Virtual Reality (VR) , the tool has been expanded to function effectively as a web application, catering to a broader user base. The primary purpose of Buddi is to facilitate seamless note-taking, editing, and updating, allowing users to organize their educational content efficiently. It will also offer options to export notes, share them on social media, and engage in collaborative learning through private chat channels with peers and institutions. As fureplan, Buddi will further enhance the learning experience by enabling users to include images and voice notes, promoting visual and audio-based learning.
This project is currently under development and not yet ready for public release. I have plan to release it in mid 2024.
I utilized Elixir, Phoenix, LiveView, and Ecto in the implementation process.
Github Project Link: https://github.com/masudme09/Buddi
Exbanking
This is an attempt to implement in-memory banking like solution. Basically, I have played through different OTP behaviours like GenServers, Supervisors etc.
Github Project Link: https://github.com/masudme09/ExBanking
PowerPointStudio
This project was built to automate the process of creating online presentations. So, the idea was to take powerpoint opjects and convert them into JSON objects. And later on feed that JSON to React application to generate similar looking light-weight web friendly presentation. With this application, it is possible to convert a powerpoint presentation with commonly used shape into JSON or HTML. This was really fun and challenging project due to shortcomings of OpenXML documentation.
Github Project Link: https://github.com/masudme09/PowerPointStudio
KaiBank
This is a open source API project to implement banking like solution. I have contributed to this project along with other developers. Main goal of this project is to implement barebone features of banking system and make it public for future enhancement by the community. I have contributed to this project from brainstorming, design, implementation and testing.
Gitlab Project Link: https://gitlab.com/pabasarajw/kaibank-backend