Engineer Blog – The Basics of Git

Welcome to our engineer blog, where we share what we’re learning day to day.
Recently, I had a chance to work with Git, so in this post, I’ll be explaining its basic concepts.

Have you ever saved multiple versions of the same file on an external hard drive or similar device, managing them by changing the filenames like this?

Multiple versions of the same file. “F” stands for “Final,” and the more F’s you have, the more “final” it seems.

This kind of versioning might be enough for personal files, but when it comes to managing source code in a large-scale project, a more precise and structured system is needed. That’s where Git comes in.

What Is Git?

Git is a Version Control System (VCS). Its role is to track and manage the history of changes to files. With this tracking, you can return files to a specific past state and compare or merge changes.

In particular, for projects involving multiple people, using Git makes it possible to visualize which files were changed, when, and by whom—helping to prevent accidental overwrites or unintended edits.

What Is a Repository?

The files managed by Git are stored in a repository. Repositories are generally classified into two types: local and remote. When saving files, it’s important to be aware of which repository your changes are being applied to.

Git is a distributed VCS, meaning each developer maintains a full history of the project in their local repository. This makes it possible to edit files and review history even while offline.

Remote repositories are hosted by providers like GitHub, GitLab, or Bitbucket. (Of course, you can also create and manage your own.) Because the storage is online, it becomes easy to share work and collaborate with others.

Types of Repositories

What Is a Branch?

When adding a new feature or making changes that might affect existing code in uncertain ways, it’s risky to update the main project source directly. In such cases, you can create an independent branch. This lets you safely develop and test features without impacting the main codebase.

Once the new feature or fix is complete and has passed testing, the branch can be merged into the main project to officially apply the changes.

Branching and Merging

Stay tuned for the next post in our Engineer Blog series!

Employee Introduction

Self-Introduction
Hi, my name is Tim, and I work at Dandelions. I’m 28 years old, and this is my third year living in Japan. I’m originally from Kazakhstan, a fast-developing country in Central Asia with a strong focus on natural resources. Winters there can get extremely cold — around -30 to -35°C — so Japan often feels surprisingly warm to me!

I’ve had the opportunity to live in several countries, which has allowed me to thrive in dynamic, multicultural environments. I’m also used to working with people from diverse backgrounds and using multiple languages in professional settings.

Also, my favorite place in Japan is Takayama in Gifu Prefecture. Ever since I first visited Takayama, I was totally captivated by the traditional Japanese village atmosphere. Exploring places like Takayama always helps me find inner peace and really helps me relax from city life.

Below are some photos I took in that amazing place.

Why I Joined the Company
While studying at a Japanese language school, I learned about the International Job Fair held at Wink Aichi. I spent the entire day there, speaking with various company representatives, and that’s when I discovered Dandelions. I immediately felt that the company’s mission and values aligned with what I was looking for.

What truly impressed me was the diversity within the team — we have members from nine different countries! I strongly believe that people from different backgrounds bring fresh ideas and unique perspectives, which drive innovation and teamwork. After having in-depth conversations with Dandelions employees, I became confident in taking the next step and joining the team.

My Impressions After Joining
Since joining Dandelions, I’ve gained valuable skills and experiences. This is also my first time working in a Japanese company, and I truly value the opportunity.

Here are a few key points I’d like to highlight:

1. Language
I studied Japanese for about two years before joining the company, but working in a professional environment took my learning to another level. Japanese is certainly more complex than the languages I’ve used in my previous work experiences. Although there are occasional language misunderstandings, my seniors and coworkers are always patient and supportive. Many of my colleagues from international backgrounds also speak English, and we’re always willing to help each other out.

2. Skills Development
Working at Dandelions has significantly expanded my knowledge of the IT industry. The company fosters a growth-friendly environment where learning and experimenting are encouraged.

Before joining, I had experience in certain areas of marketing. Since coming on board, I’ve gained new skills in using AI for content creation, storytelling, and video editing — all of which are highly relevant in today’s fast-changing digital landscape.

3. Japanese Corporate Culture
Another highlight has been learning about Japanese corporate culture, which is quite different from Western work environments. It has its own rhythm and charm. I’ve learned to pay attention to small details and to value the process itself — not just the end result.

I’m truly happy to be part of such a supportive and inspiring workplace. I look forward to continuing to grow and contributing to the team’s success.

In-house Study Session: “Basics of Security”

We held an in-house study session, and I’d like to introduce it. The theme was “Basics of Security.” The session was led by Chicken Kiwi from Team 0.

During this study session, we learned about the risks involved when a security incident occurs and the basic measures that can be taken during daily work to prevent such incidents.

The session followed this flow:

The necessity of security
・Potential issues
・The five key principles of information security
・Security measures implemented by Dandelions
・Information security quiz
・Session Overview

The Necessity of Security

Here, we studied the necessity of security measures and the social, legal, and moral impacts on the company in case an incident occurs. We explored how security is crucial for maintaining the integrity and reputation of the company.

Potential Issues

In this part, we learned about possible security risks from actual case studies. We discussed not only the impact on the company from attacks but also the legal responsibilities of the company and management when security measures are insufficient, as well as how it can affect relationships between companies.

The Five Key Principles of Information Security

From the security guidelines published by IPA (Information-technology Promotion Agency), we learned about the key security measures individuals should take. We primarily reviewed the following points with examples and solutions:

Keep your OS and software up to date.
Use antivirus software.
Strengthen your passwords.
Review sharing settings.
Be aware of threats and attack methods.


Summary

This time, we studied the importance of security and basic countermeasures. The study session was based on the security guidelines published by IPA. IPA provides various resources on information security, so if you’re interested, please visit their website.

IPA Guidelines for Information Security for SMEs: https://www.ipa.go.jp/security/guide/sme/about.html

Stay tuned for the next article!

Engineer Blog – Trends in Low-Code Tools(Part 2)

As part of our engineer blog, we introduce the topics we are actively learning.
This time, we focus on low-code tools!

Theme: Trends in Low-Code Tools

In our previous blog post, “Trends in Low-Code Tools” – dandelionS Blog, published in July 2021, we discussed the latest developments in low-code tools.

Since then, more of our team members have gained experience with OutSystems, prompting us to conduct another trend analysis to explore the future outlook of low-code tools.

What Are Low-Code and No-Code?

The adoption of low-code and no-code tools is increasing to improve app development efficiency, enabling faster development and cost reduction.

  • Low-Code: Requires minimal coding for app development. Some programming knowledge is necessary, but it allows for flexible customization.
  • No-Code: Enables intuitive app creation without coding. However, customization options are more limited.

[Comparison table with representative tools]

Comparison of Major Low-Code & No-Code PlatformsThe market share of low-code and no-code platforms is primarily based on industry recognition and the number of companies adopting them. Below are the leading platforms ranked by market share:

Microsoft Power Apps

A widely adopted platform due to its strong integration with Microsoft products (especially Office 365 and Azure). As part of the Microsoft ecosystem, it allows businesses to easily create and manage applications.

  • Adoption: Used by organizations of all sizes worldwide, from small businesses to large enterprises.

OutSystems

A low-code platform specializing in enterprise solutions, excelling in large-scale and complex app development. It features strong automation and AI functionalities and is particularly popular among large corporations.

  • Adoption: Commonly used in industries like finance, manufacturing, and public institutions.

Mendix

A low-code platform designed for enterprise applications, known for its integration with SAP and industry-specific approach. It supports both cloud-based and on-premises deployment, providing an advanced development environment.

  • Adoption: Frequently used in manufacturing and logistics industries.

Appian

Specialized in Business Process Management (BPM), this platform excels in process automation and complex workflow management. It is designed for enterprises looking to optimize business operations.

  • Adoption: Popular in industries such as banking, insurance, and pharmaceuticals.

Future of Low-Code and No-Code

The future of low-code and no-code tools looks promising, with market growth and technological advancements driving increased adoption. The integration of AI will further enhance development speed and expand possibilities for both enterprises and individual developers.

Market Growth

  • The global low-code/no-code market was valued at $17 billion in 2022.
  • It is projected to grow to $45 billion by 2027.
  • The market is expected to expand rapidly over the next 5–10 years.

Key Trends in the Low-Code/No-Code Market

Stronger Integration Between AI & Low-Code/No-Code
AI will automate development processes, allowing for natural language-based app development, eliminating the need for manual coding. Additionally, AI will optimize UI/UX design and code generation.

Examples of AI Integration:

  • Power Apps’ “Copilot” and OutSystems’ “AI Mentor”
  • Developers can input commands like “Create a product management app”, and AI will automatically generate the application.
  • AI will analyze user behavior and optimize UI layout automatically.
  • With further AI advancements, even complex logic and data analysis will be handled by AI, accelerating the shift toward true no-code development.
  • Developers’ roles will transition from coding to designing and managing applications.

Conclusion

Based on market share, Microsoft Power Apps dominates the low-code space due to its strong integration with Microsoft’s ecosystem. However, OutSystems also maintains a strong position, particularly in enterprise applications.

While large enterprises have been the primary adopters, the question remains whether low-code tools will expand further into SMEs and general users.

Looking ahead, as low-code tools and AI continue to merge, developers will focus more on designing applications, while AI handles coding. Exploring how OutSystems can integrate with AI will be a key consideration moving forward.

For our next post, we’ll explore the potential of OutSystems and AI integration and what it can achieve. Stay tuned!

Employee Introduction

Thank you for taking the time to read this.
Nice to meet you! My name is “Su,” and I joined Dandelions in August last year.

Self-Introduction

Before joining Dandelions, I lived in Nagaoka City, Niigata Prefecture. Nagaoka is a charming city with rich nature and a relaxed atmosphere. But the most unforgettable experience for me was definitely the Nagaoka Fireworks Festival!

Nagaoka Fireworks Festival

When I saw it for the first time, I was truly amazed. The breathtaking fireworks filling the night sky made me feel as if I had stepped into another world. A local resident told me, “It’s one of the biggest fireworks festivals in Japan.” I also learned that for the people of Nagaoka, this event is particularly special—it has been held as a tribute to post-war recovery and continues to carry deep historical significance. Knowing this background made the experience even more moving.

What Led Me to Join the Company

I joined Dandelions in August 2024. When I came across the company’s official website on a job search platform, I felt that the atmosphere seemed enjoyable. I was looking to shift my career to web development, as I have always been fascinated by the ever-evolving world of technology. I wanted to grow while learning the latest technologies and believed that being involved in various projects would allow me to gain diverse experience and skills. Dandelions offers plenty of opportunities for this, providing an environment where I can pursue personal growth.

Additionally, Dandelions has many employees from different countries, and I was strongly attracted to the workplace environment where I could collaborate with people from diverse cultural and professional backgrounds. I was convinced that working in such a diverse setting, where different perspectives are valued, would contribute to my own growth as well.

Impressions After Joining

Since I had no prior experience working in the IT industry, I initially lacked confidence and felt anxious. However, Dandelions offers well-structured training programs for newcomers, allowing me to learn the fundamentals thoroughly. Thanks to this supportive environment, I was able to ease into my work with confidence. Through training, I gradually acquired the skills and knowledge necessary for practical work, which helped me build my confidence step by step.

The workplace atmosphere is also excellent. My senior colleagues are kind and provide guidance patiently. Their everyday conversations help create a relaxed and welcoming work environment, making it easier to focus on my tasks without worry. Thanks to this warm support, my initial concerns have gradually faded, and I now feel fulfilled in my daily work.

Moving forward, I hope to continue learning and growing through my experiences at Dandelions. With the support of those around me, I will keep improving myself and strive to achieve even better results.

Stay tuned for the next blog update!

[Company Trip] A Visit to Kyushu (Fukuoka & Oita)!

Thank you for visiting our blog!

From July 26 to July 28, 2024, we went on a company trip.
This time, our destination was Kyushu (Fukuoka & Oita)!
Here’s a look at our journey.

From Chubu Centrair International Airport to Fukuoka Airport

For Dandelions, this was our first time traveling by airplane.
With about 30 participants, we were a bit worried that someone might oversleep and miss the flight, but thankfully, everyone made it on time, and we departed without any issues!

Upon arriving at Fukuoka Airport, we boarded a tour bus.
Our tour guide had a fantastic sense of humor, making the trip even more enjoyable!

Dazaifu Tenmangu Shrine

Our first stop was Dazaifu Tenmangu Shrine.
Currently, it’s making headlines due to the “Reiwa Great Renovation”, the first major restoration in 124 years, featuring a special temporary hall of worship.

After visiting the shrine, we had some free time to explore the area.
Some enjoyed street food, while others completed their souvenir shopping based on the tour guide’s recommendations.

Lunch at Yushoku Kobo Chabana

For our first day’s lunch, we dined at “Yushoku Kobo Chabana”.
This traditional Japanese-style restaurant, set in a restored old house, provided a relaxing atmosphere where we enjoyed seasonal dishes.

Beppu Jigoku Meguri (Hell Tour) – Part 1 (Chinoike Jigoku & Tatsumaki Jigoku)

In the afternoon, we explored two of Beppu’s famous “Hells”:

Chinoike Jigoku is said to be the oldest natural hot spring in Japan, and its striking appearance and strong smell left a powerful impression. A medicinal product called “Chinoike Ointment” was also available for limited sale.

Tatsumaki Jigoku is a geyser, designated as a natural monument of Beppu City, where hot water erupts at regular intervals. The dynamic bursts of hot water were truly spectacular.

Hotel Stay: Beppu Onsen “Hotel Shiragiku”

We stayed at the famous Beppu Onsen Hotel Shiragiku.
As per Dandelions’ tradition, we held a lively company banquet, where we enjoyed a great evening together.
As a special highlight, our company president presented outstanding employees with a unique “Hell T-shirt” as a token of appreciation!

After the banquet, we ventured out into Beppu’s nightlife!

One of the notable places was “Takegawara Onsen”, which is said to have inspired Studio Ghibli’s “Spirited Away”.

Beppu Jigoku Meguri (Hell Tour) – Part 2 (Umi Jigoku, Shiraike Jigoku, etc.)

On the second day, despite the temptation to relax at the hotel, we resumed our Hell Tour.
With clear skies and intense heat, walking through the various hot springs truly felt like a journey through hell!

Lunch at “Geothermal Tourism Lab Midori”

For lunch, we visited “Geothermal Tourism Lab Midori”, where we enjoyed food steamed using natural geothermal heat while soaking our feet in a hot spring foot bath.
The footbath was so hot that many people ended up with bright red feet!
We also indulged in a delicious geothermal pudding for dessert.

Iichiko Hita Distillery

Next, we visited the Iichiko Hita Distillery.
After a brewery tour, we explored the gift shop, which featured not only shochu but also a variety of other products.
Many participants picked up souvenirs to take home.

Hita Mameda Town

The last stop on Day 2 was Hita Mameda Town, a historical district with Edo-period architecture.
This area is a popular tourist attraction, and one of its most striking features was the massive “Hita Geta” (wooden clogs) standing over 4 meters tall!

Extended Stay Group

Previously, Dandelions’ company trips were limited to one night and two days, but this year, we leveled up!


Since we had traveled all the way from Nagoya to Kyushu, some members decided to extend their stay and continue exploring for a third day.

Time flew by, and before we knew it, it was time to return to Nagoya.

Throughout the trip, participants actively uploaded and shared photos in our internal app’s album.
This time, we broke the record with over 800 photos—the highest number in Dandelions’ company trip history!
That alone speaks to how much everyone enjoyed and cherished this trip.

We look forward to sharing our next company trip blog with you—stay tuned!

Engineer Blog: Local-First

In this engirring blog, we introduce the learning topics we work on daily.

What is Local-First?

Recently, the concept of Local-First has been gaining attention. Many applications are designed with an online-first approach, where data is stored in the cloud. This allows users to access their data from any device and easily share it with others. However, applications that rely on online connectivity have several disadvantages, such as:

  • Data is inaccessible without an internet connection.
  • The application becomes unusable if the server goes down.
  • Communication with the server can introduce delays, reducing responsiveness.
  • Storing personal data in the cloud poses security risks from external access.

The Local-First approach addresses these issues. In Local-First applications, data is primarily stored on the user’s device and synchronized only when needed. This approach offers several benefits:

  • Data remains accessible even without an internet connection.
  • The application functions independently, unaffected by service outages.
  • Immediate data read/write operations without relying on a server.
  • Personal data is managed locally, reducing dependency on the cloud.

Examples of Local-First Applications

Several applications utilize the Local-First approach, including:

  • Evernote: Allows users to create and view notes even while offline. Synchronization with the cloud ensures data availability across devices.
  • Notion: An all-in-one productivity tool featuring document management, task tracking, and database functionality. Users can edit content offline, and changes are synced to the cloud to maintain data consistency.

Let’s Build an Application! (TypeScript Edition)

To experience the Local-First approach, let’s build a simple To-Do App that runs entirely within a browser! This application will store data locally, ensuring that tasks remain saved even after a page reload.

Below, we introduce the key implementation details.

ToDo の追加(データをローカルに保存)
async function addTodo(text: string) {
    const todo = {
        _id: new Date().toISOString(),  // 一意のID
        text,
        completed: false
    };
    // データをローカルに保存
    await db.put(todo);
}

ToDo の表示(保存されたデータを取得)
async function renderTodos() {
    const result = await db.allDocs({ include_docs: true });
    result.rows.forEach(row => {
        // タスクを取得して表示
        console.log(row.doc.text);
    });
}

ToDo の削除
async function deleteTodo(id: string) {
    const doc = await db.get(id);
    // タスクを削除
    await db.remove(doc);
}

Running the To-Do App

  1. Open the application in a web browser.
  2. Enter a task and click the Add button—the task will be added to the list below.
  3. Close the browser. (Normally, this would cause the entered tasks to be lost.)
  4. Reopen the application in the browser. (The previously entered tasks remain displayed.)
  5. Click on a task to delete it.

Thoughts on Running the App

One of the standout features of this To-Do App is its ability to function independently of the internet, managing data entirely within the browser. By storing data locally, users can continue using the application even while offline.

Key Takeaways:

  • Data persists even after a page reload!
  • The app works without a server!
  • Fast performance with instant data retrieval!

Applications that don’t rely on servers or the cloud might seem somewhat uncommon, but the Local-First approach proves to be highly valuable for offline functionality and data privacy. While this project was a simple implementation, it could be extended with cloud synchronization or mobile support for a more versatile experience.

Exploring the possibilities of Local-First applications has been insightful, and I look forward to leveraging this concept further.

See you in the next blog post!

Employee Introduction

Thank you for taking the time to read this. I am “Kuroma,” and this is my third employee introduction article. You can read the previous article here.

In this piece, I’d like to share what motivated me to join the company and what my experience has been like since coming on board.

What Prompted Me to Join the Company

Because I majored in history at university, when I first started my job search I looked around and thought realistically that there were no options other than clerical positions. As a result, I initially focused my efforts on finding office jobs.

However, during my job hunt I learned that a friend from the humanities had secured a position at an IT company. This piqued my interest in the IT field, and I began actively attending information sessions held by IT companies. During that period, I discovered that Dandelions was hosting a company briefing at another campus. Having already been intrigued by the company’s website, I decided to attend the session.

At the briefing, I heard them speak about how they place great importance on the “people” behind what they create. At that time, I was working part-time in customer service at a specialty organic products store, and through that experience I had come to value work that truly helps others. I found myself resonating strongly with Dandelions’ philosophy, and thought, “I would really love to work here.” That conviction led me to apply—and eventually, I was offered a position, bringing me to where I am today.


Life After Joining

Now in my fourth year at the company, I can confidently say that Dandelions is a workplace that suits me perfectly.

I joined with almost no IT knowledge, but the comprehensive new employee training provided me with a solid foundation. Even when working on-site with clients, my seniors took the time to teach me with great dedication. Even now, whenever I encounter something I don’t understand—technical issues or otherwise—there are always plenty of people willing to help, which makes me feel very secure in my role.

In addition, everyone at the company is kind, and the work environment is consistently filled with smiles. Because the staff gets along so well, I find it easy to join in on after-work drinks and other company events. Personally, I feel that Dandelions’ gatherings are far more positive than the typical corporate drinking parties. If I didn’t have commitments the next day, I’d happily participate every time. It really speaks to how approachable and cheerful our workplace is.

A glimpse of our lively after-party atmosphere

In Summary

When I first joined, I was filled with uncertainty. However, Dandelions is made up of cheerful, kind, and reliable individuals, and I feel that I am who I am today largely thanks to their support.

I still feel that I have much to learn and can be somewhat unreliable at times, but I am committed to not only maintaining this warm and supportive work environment but also improving it further. I will continue to work hard so that I can give back to those around me.

That’s all for now. Stay tuned for the next installment!

Introducing Our November Internal Contest!

Thank you for taking the time to read this post.
I’m “Omatsu” from the Operations Management Department, and I’ll be your guide for this blog. Today, I’ll introduce the year-end report meeting held in November 2024 as part of our event updates.

Section 0

Section 0 consists of the Web Design Unit (Unit 0) and the Cloud & Infrastructure Unit (Unit 3). The presentation of Section 0 covered the following topics:

  • Trend Research
  • Recruitment Website
  • Corporate Website
  • Server Management
  • Internal Security Literacy
  • Employee Welfare Services

The trend research on websites revealed some surprising insights. Much like fashion trends, the “Y2K” aesthetic has made its way into web design. Additionally, there’s a trend where websites display mobile-like layouts, even when viewed on a PC. As someone not deeply familiar with IT trends, I was amazed to see how trends can have parallels across different industries. It was a valuable learning experience.

In addition, Section 0 has been developing an employee welfare service called “Gorippuku” (御利福). Though only part of it was introduced, the web version demonstrated features like user information management, while the app version showcased functions such as displaying coupon QR codes. At first, the discussion seemed quite technical, which made me nervous, but once the explanation was given, the operations turned out to be straightforward.

Section 1

Section 1 comprises the AI Unit (Unit 1) and the Low-Code Unit (Unit 2). Their presentation focused on activities aimed at “efficiency improvement,” including:

  • Updates to Internal Systems
  • App Development for Image Recognition
  • Access to Internal Systems via Facial Recognition
  • Database Implementation for Internal Use

I was particularly amazed to learn that facial recognition, which is now a standard feature for unlocking smartphones (like FaceID), can also be used to access internal systems. Interestingly, they explained that the system even displays a matching score, but lighting conditions or clothing colors could sometimes result in incorrect matches. It was fascinating to see the challenges involved in implementing such advanced technologies.

Summary

This year-end report meeting provided a valuable opportunity to reflect on our activities over the past year. Like last year’s event, the presentations were interactive, making it an enjoyable and engaging experience. Even for someone with limited technical knowledge like me, the content was easy to understand.

Section 0’s presentation on security literacy was particularly impactful. It served as a reminder to be cautious about suspicious emails, not to open them lightly, and to report immediately if one is accidentally opened. This was a great reminder to maintain vigilance not only for work emails but also for personal accounts.

In Section 1, the features we requested from the Operations Management Department were incorporated into the system. Since these functionalities were implemented specifically for us, we plan to make full use of them to streamline our operations further.

That’s all for this update.
Stay tuned for the next blog post!

Engineer Blog – About QR Code Generation

Welcome to our engineer blog, where we share our ongoing learning experiences. This post is part of Unit 0, which focuses on web design. Today, I’d like to introduce an opportunity I had to work with something less commonly encountered: QR code generation.

Preparation

For this implementation, I used Java. Since my development environment is Gradle-based, adding the necessary libraries was as simple as including the following in the build.gradle file. (Isn’t it convenient how accessible things have become these days?)

Reference Site:
Getting Started Developing · zxing/zxing Wiki · GitHub

The library used here is ZXing, an open-source Java library that enables the creation and reading of one-dimensional codes (such as barcodes) and two-dimensional codes (like QR codes).

Implementation

The key element for generating QR codes is the encode method of the QRCodeWriter class. As summarized in the comments, the following parameters can be specified:

  1. First parameter: The content to be displayed.
  2. Second parameter: The output format ( BarcodeFormat from the ZXing 3.5.3 API).
  3. Third parameter: The dimensions.

The generated data is stored in a variable of type BitMatrix (bm). By specifying the output format in the writeToStream method, you can save the generated QR code in your desired format. In this case, we output the QR code in PNG format.

While the actual implementation involves handling API requests and returning the output result to the screen, I’ll omit those details here.

Summary

Nowadays, if you just want to generate a QR code once for testing purposes, there’s no need to write a program from scratch. You can find many online QR code generators with just a quick search. Some even let you customize the design or offer formats tailored to specific use cases, making them surprisingly fun to explore.

This post covered only the basics, but I hope it gave you an idea of how QR code generation works. If you found this interesting, I’d be delighted.

Stay tuned for the next engineer blog post!

P.S. The content of the QR code includes a closing message!