Skip to content
bayindirhbayindirh
FREIGHT SHIPPING AND PORTS

Traveling light

I had to travel recently for a conference, and I decided to apply what I've learned about minimalism so far. Traveling as a tech person means carrying more electronics and peripherals than most people, and things can get complicated and heavy quickly. This time, I tried to prevent that, and I succeeded. Since it's a work-related conference, my office laptop came with me, which is small and can be charged with a 30W USB-C charger. Also, a portable 4G modem, a power bank, an e-book reader, and a phone took the ride with me. That meant a lot of chargers and cables before. To my surprise, all the peripherals needed for this arsenal of devices can be reduced to a 2-port charger and two cables. That was unimaginable until recently. That removes a lot of volume and weight from the backpack, making it much easier to haul around both on the plane and at the destination. While we still have 15 competing standards for these things, the devices use a small subset of these. Convergence is good. It's worth noting that the cables and charger are aftermarket items. While this adds another cost item, their long life, daily use, and the convenience they bring are incomparable to this cost. As I've noted before, minimalism and frugality need not be the same thing but, these one-time costs become negligible if the item has a meaningful lifetime. In my opinion, peace of mind is priceless. On the luggage side, I took a similar approach. Reducing what's packed to bare essentials and adding extras for critical items only saved a lot of space and weight. That, in turn, enabled me to fly without checked luggage and saved me a lot of time at the airport. I'm not a person who carries everything and the kitchen sink everywhere, but making small changes had a much greater impact than I anticipated. Another nice side-effect is the time I've saved while packing. Fewer items, less thinking, less hauling, and importantly, much less stress and anxiety. That is precisely the thing that I wanted to achieve when I started exploring minimalism. I'm starting to see the results I hoped to achieve with minimalism, but I'm at the beginning of my journey. I'm sure that as I go deeper, I'm going to meet with issues I've never thought about before, but that part comes later for now.
bayindirhbayindirh
PROGRAMMING LANGUAGES AND COMPILERS

Tools I use: Eclipse

This is first of a series of posts where I talk about the tools and technologies I prefer to use. They are not intended to be in-depth technical documents, but posts answering the questions like Why & How with the history behind it. As always, all comments are welcome. Eclipse is an IDE framework. A complex scaffolding which can host a lot of functionality at the same time. This means an Eclipse installation can be almost anything, and many things at once. You want a C++ IDE? Check. Python? Check. Java? Go? Web development? Check, check & check. This makes Eclipse decidedly different from other tools at the same category, and puts it somewhere between an old school IDE and a modern code-aware text editor with plugins. As a result, when a newcomer sees Eclipse first time, there's a big, unfamiliar terrain to navigate. Moreover, Eclipse is old. Around 20 years old, to be precise. As a result, it doesn't follow the new conventions, styling, UI densities, and whatnot from current era. It's written in Java. In other words, It's a prehistoric artifact when evaluated from a technology perspective. Or is it? Personally, I'm using Eclipse since 2006. Before that, I have used various software on and off, but while I was developing my graduation project, I needed a Java IDE, and found Eclipse. It was acceptably fast, worked on both Windows and Linux (I was dual-booting at that time), and most importantly, it was portable. I installed Eclipse to a 256MB flash drive alongside my workspace, and used that USB flash drive to work on my code while I was at the university (laptops were luxury back then). Eclipse provided great Java tools at that time (it was on par with greatest IDEs of the time for Java), and allowed me to develop and debug my graduation and master's projects. I've published papers from these research projects, too. Being able to develop, debug and oversee the whole process from a single point hooked me to Eclipse. Then, I found out that Eclipse can do more than Java (and Subversion). Being interested in C++ lead me to install C/C++ Development Tools (CDT), and Linux profiling integration tools (Linux Tools). Then, Eclipse published its Git integration. Installing these three things converted Eclipse to a modern, Linux native C/C++ development environment with a single click. Eclipse has a notion called "Perspectives", which are "task oriented views" in its essence. With perspectives, Eclipse can transform on the fly, and doesn't get cluttered. While Eclipse had its dark periods of being a heavy, slow and crash-prone application, especially in the C++ department, the project found its footing in the last 7-8 years, and fixed all its problems, and changed to a quarterly release schedule. While history of Eclipse warrants a single and much longer post, let's get into how I use Eclipse. Eclipse puts "Integrated" into IDE firmly and squarely. Eclipse uses "Projects" to store everything related to a project, including its source, settings, and everything in between. A project can override any global setting, and these settings are carried with the project itself. While not favored broadly, by submitting these files into your Git repository, you can carry all your pipeline with the source itself. This allows me to carry and share a project with all its intricate details and settings without detailed documentation and scripts. All are there when I import my project back to Eclipse. On top of that, Eclipse supports a great deal of programmability out of the box. This means, almost every path and every setting can contain variables. Using these variables allows a project to behave the same way between systems, operating systems and directory trees, making it more portable. Another feature I love is "Profiles". A project can have many build and debug profiles, which can contain different compiler flags, toolchains, folder includes and excludes, and environment variables. As a result, you can target different architectures, feature/optimization levels, or in extreme cases, a different source tree. This last feature makes compiling test suites with Catch 2 a breeze. While I didn't use extensively, you can even tune which ELF parser to use for debugging and understanding your errors, per profile. Eclipse has an integrated Git client for a long time. Arguably, it's the best Git client I have ever used (Git Tower comes a close second). It's completely integrated to all views, provides great visual aid for history, encapsulates all common operations to easy to understand flows, and has a useful, integrated diffing tool. Moreover, it guides you during conflict resolution, provides advanced push/pull/merge/rebase controls and even discourages you from doing wrong things with your repo. On the language specific features provided by the "Toolkits", C/C++ Development Tools' indexer is something worth mentioning. It's called an indexer, but for historic reasons. It supports auto-completion (incl. templates), code formatting (with different profiles nonetheless), documentation access, declaration/instantiation location, advanced refactoring, code analysis, and probably some other things I didn't need or explore yet. When combined with Linux Tools (e.g. Valgrind), you can run the tests and profiling from your Eclipse window and get your results directly into your window, with graphs and annotations on your source code directly. This is a true integration. Not "tool launch" support. PyDev, which is the Python development environment for Eclipse, provides almost the same set of features, and some Python specific ones, as well. The last part I want to touch in this category is synchronization, and export/import capabilities. You can export all your configuration (installed items) and settings in Eclipse, with small XML files. This allows you or anyone to backup or share your Eclipse installation. You can import your configuration to any Eclipse installation to transform it to the Eclipse you got used to, and import your preferences on top of it to continue from where you left. If you want a more automatic way, you can login to your Eclipse account from any number of installations and keep them in sync via Oomph feature. There are more Eclipse features I'm aware of, but don't use actively. Hence, I'll leave a concise list of them: - Language Server Protocol support. - Compile into / Run in Docker container. - Remote development support (via SSH or dedicated daemon). - Automatic Change Log generation. - True multi monitor / multi window support. - A broad official package ecosystem. - A board third party package ecosystem via official Marketplace. - ...and many more. As a result, today's Eclipse is neither slow, nor heavy (it uses less RAM than a certain, popular editor of today), nor left behind. With its quarterly updates, diverse package and tool integration ecosystem, it's as capable and flexible as any tool used by today's developers. On top of that, Eclipse provides a true, single point of command and control for all the software development pipeline, from foundation to testing to deployment/publishing. It's a true marvel and powerhouse.
bayindirhbayindirh
CAREER DEVELOPMENT AND PROFESSIONAL SKILLS

Tools, craftsmanship and mastery

There are things which mesmerizes me, with no end. One of them is watching humble people who are good at what they're doing. Being calm, confident and efficient while doing high quality work has a particular charm to it, regardless of the discipline they're in. Honestly, I have been studying these people on and off for quite some time. It's not a scientific study, but more of an informed observation, and I think I have found the things which makes these people tick. Most important of all is, these people are devoted to their crafts. They like what they're doing with a well refined love, with a deep respect added at healthy amounts. When they start working on something, this feeling emanates from them. A deep concentration with a subtle sense of joy, combined with unwavering professionalism and focus for high quality results become palpable in the air around them. Almost all these people are doing their crafts for a long time. They are used to ins and outs and peculiar details of their crafts. They don't get puzzled when something goes different than they expect, because they know what to do. They adjust and continue. This is rooted on experience per my observations. They know what might happen and what might not, and are mentally prepared at every step. Another common thing among these people are tool usage habits. The tools they use are well worn. They might be handed down from a generation earlier, or are using what they got for a long time. In every case the craft and the tool has evolved and transformed together, expanding what's possible with the tool and the craft itself. Even another person who get the very same tool can't use it the same way, because the tool at hand requires mastery and experience to wield that efficiently and productively. Last but not the least, these craftsman solve some of their problems once, and for all. Tools get fixed, methods solidified, procedures perfected. They internalize the things they do in a manner which limits them in numbers but maximizes in flexibility. They can get a new technique if what they have doesn't fit the bill, but they'll try to evolve what they have first. As a result, these people build a deep wisdom, appreciation and feeling for what they do, how they do and the results they get. This makes them distinguished individuals with a different sense about what they do, the results they get, the knowledge they embody and transfer to others. These kinds of people deserve to be observed by hours on end with delight and a keen interest on what they do, and how they achieve what they achieve. And honestly, I aspire to be one of these people. Maybe we should all aspire to be like that at some point, I have no idea. Until next time, Be kind.
bayindirhbayindirh
INTERNET CULTURE AND SOCIAL MEDIA

Strong Opinions & Eroding Discourse

I have been observing a trend both in blogs and general internet discourse, but instead of pointing fingers, I decided to sit back, observe and assume that I'm the man who was yelling at the cloud. However, an article, and comments on the orange site convinced me that I'm not the only one with this observation, hence I decided to note it here. We're arguably going through the second big shift in computing history with a renewed interest in programming due to exponential rise of computing in our daily lives in visible and invisible ways. Sustaining this growth requires a much bigger brain power, and not falling behind in this global technology race. In turn, this fuels discourse and information sharing, and in turn, an evolved version of the flame wars of the 80s and 90s is taking place. The reason for this is simple, in my opinion. We’re building more sophisticated and ambitious things, which results in bigger and more sensational outcomes. People involved in and excited by these technologies hype it knowingly or unknowingly, and when someone opposes their views, they get upset and answer back forcefully. These sparks ignite the already flammable atmosphere, and flames ensue. While flame wars look like a natural outcome, its existence is detrimental to neutral and healthy discourse on the bigger scale. Eliminating this phenomenon is impossible in my opinion but, minimizing its occurrence is highly beneficial. The key to reducing flame wars is a simple but hard to master technique: “listen (read) intently and talk (write) clearly and calmly”. Applying this requires a level head and is not always possible, I know. Also, some people are very good at intentionally triggering the emotions of the other party. However, going above and beyond this simple shouting matches is beneficial for both arguing and spectating parties, because it maximizes the chances for learning something, and leaving the discussion in a better place. Next time, please try to reread the words of the person who’s answering you slowly and intently if you find yourself angrier than you should be, and answer ten minutes later if you can help it. You’ll be amazed how this one weird trick can change your conversations for the better. Until next time, Be kind.
bayindirhbayindirh
BIOLOGY AND BIOTECHNOLOGY

Spring cleaning

As life progresses, it naturally creates a lot of challenges. Regardless of their size, they always pack more than they show. Handling them the way they deserve requires more effort than blindly fighting them until they give, and trying to handle these challenges to prevent them from repeating resulted in something unexpected: Burnout. This was not the first time I had exhausted myself, but this was different. It developed slowly due to my habits, stronger personal support, and efforts to prevent it since I felt something was off; alas, the fall didn't stop until I understood what it was and what was feeding it. This time was different in terms of underlying cause and the required changes in my life to end it in a meaningful manner. Normally, when an event like this happened, the solution was the "stop & restart" method, a procedure I used successfully many times. The idea is simple. Declare you're mentally bankrupt, both in time and energy. As a result, everything stops, and you start doing things related to their importance, building a new schedule from the ground up. The resulting schedule might not look different, but it's different enough to eliminate the problematic things you took on and put you back on track. This time, it didn't work. Instead, it didn't improve anything. The slow decline continued until I seized up, being unable to accomplish anything. This is when I understood that something fundamentally different is blocking me, not the daily things that I'm trying to tackle, but the things running in the background, the things that have eluded me, or more accurately, the things I didn't pay attention to. As far as I remember, having a secondary list for projects and ideas was natural. Every worthy idea, possible project, and thing I want to work on is recorded in this list. The list took several forms. A notebook, a text file, or, more recently, a database. This database contains notes, designs, requirements, and more. Every entry is a semi-organized checkpoint of a project. When a project is restarted, this checkpoint is retrieved and worked on, then if it needs to stop, the database is updated, and the project is left alone. This method has incubated many things, and was working, I thought. The human brain is an interesting thing and works in mysterious ways. While I assumed that the secondary list was on my computer, my brain was keeping a second copy and working on it to find ways to progress every entry on it. Considering the size of the list, my brain was working way overtime without realizing it. The desire to keep tabs on everything and progress them even a minuscule amount burned me out with a slow yet steady ember. As we go through life, every one of us takes on more responsibility for running our own lives. This happens slowly and naturally; hence, we don't think about this a lot. On the other hand, we humans have practical limits on what we can do by ourselves. These limits are psychological in most cases, yet there are hard, biological limits to what we can accomplish. While we tend to believe that all barriers are removable, removing the biological ones is not always possible. One can get a small boost by trading off longevity, but that's everyone's own choice. Personally, I decided to dig into the database and remove the things that don't make sense or are no longer valid. Removing projects from the database, complete with their accumulated knowledge, felt bad at first, but considering I have the seed of the idea and everything sprouting from it, the result is not a loss. Instead, it's a removal of self-inflicted expectation, and it felt good. I have talked about scaling down life before; however, the process was more aimed at the physical side of my life since physical space is more visibly limited. However, while digital space has no practical boundaries, the accumulation of digital artifacts creates the same mental load. As a result, I'll be treating my digital space the same way I do the physical one, and won’t skimp on my regular spring cleaning. As it turns out, I have gone through a similar experience in 2023. While not completely identical, it's definitely related. Until next time, Be kind.