MoreRSS

site iconHackerNoonModify

We are an open and international community of 45,000+ contributing writers publishing stories and expertise for 4+ million curious and insightful monthly readers.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of HackerNoon

基于 API 的基础设施即代码:以开发者视角实现云资源自动化

2026-03-23 00:00:30

Modern software development moves fast. Teams deploy code many times a day. New environments appear and disappear constantly. In this world, manual infrastructure setup simply does not scale.

\ For years, developers logged into dashboards, clicked through forms, and configured servers by hand. This worked for small projects, but it quickly became fragile. Every manual step increased the chance of mistakes. Environments drifted apart. Reproducing the same setup became difficult.

\ Infrastructure as Code (IaC) solves this problem. Instead of clicking through interfaces, developers define infrastructure using code. This approach makes infrastructure predictable, repeatable, and easy to automate.

\ In recent years, another approach has become popular alongside traditional IaC tools: using cloud APIs directly to create and manage infrastructure. This gives developers full control over how resources are provisioned and integrated into workflows.

\ This article explains what Infrastructure as Code means, why APIs are a powerful way to implement it, and how developers can automate cloud resources using simple scripts.

What Is Infrastructure as Code?

Infrastructure as Code means managing infrastructure using code instead of manual processes.

\ Instead of setting up servers, databases, and networks by hand, you define them in scripts or configuration files. These files describe the desired state of your infrastructure. A tool or script then creates and maintains that state automatically.

\ For example, instead of manually creating a database, you might define it in code like this:

database:
  name: app_db
  engine: postgres
  version: 16

\ Once the code runs, the database is created automatically.

\ This approach provides several key benefits.

\ First, it improves consistency. Every environment is created from the same definition. Development, staging, and production environments stay aligned.

\ Second, it improves repeatability. If infrastructure fails, it can be recreated from code in minutes.

\ Third, it improves version control. Infrastructure definitions live in the same repositories as application code. Teams can review, track, and roll back changes.

\ Finally, it enables automation. Infrastructure can be created during deployments, tests, or CI/CD pipelines.

The Limits of Manual Infrastructure

Before IaC became common, infrastructure management relied heavily on dashboards and manual configuration.

\ A developer would open a cloud console and perform steps like:

  • Create a server
  • Attach storage
  • Configure environment variables
  • Connect a database
  • Add a domain

\ These steps worked, but they introduced problems.

\ Manual configuration is hard to document. Even if teams write guides, small details are often missed. Over time, environments drift apart.

\ Manual processes also slow down development. Spinning up a new environment may take hours instead of seconds.

\ Even worse, manual infrastructure cannot easily be tested. If something breaks, reproducing the same conditions becomes difficult.

\ Infrastructure as Code removes these problems by turning infrastructure into something that can be scripted, tested, and automated.

Why APIs Are a Powerful IaC Tool

Many people associate Infrastructure as Code with tools like Terraform or CloudFormation. These tools are powerful, but they are not the only option.

\ Every modern cloud platform exposes an API. That API allows developers to create resources programmatically.

\ This means infrastructure can be controlled directly from code using HTTP requests or command-line interfaces.

\ Using APIs for IaC has several advantages.

\ First, it offers maximum flexibility. Developers can integrate infrastructure creation directly into applications, deployment scripts, or internal tools.

\ Second, it reduces tooling complexity. Instead of learning a specialized IaC language, teams can use languages they already know, such as Python, JavaScript, or Bash.

\ Third, it enables dynamic infrastructure. Scripts can create resources only when needed, scale them automatically, and remove them when work is complete.

\ For example, a test suite could automatically create a database, run tests, and delete the database afterwards. This keeps environments clean and reduces costs.

\ APIs essentially turn the cloud into a programmable platform.

Automating Infrastructure with Scripts

Using APIs for infrastructure automation usually follows a simple workflow.

\ First, a script authenticates with the cloud platform using an API token or credentials.

\ Second, the script sends requests to create or modify resources such as applications, databases, or storage.

\ Third, the script captures identifiers or configuration values from the response.

\ Finally, those values are used in later steps, such as deployments or integrations.

\ Because these steps run in code, they can easily be included in CI/CD pipelines.

\ A typical pipeline might do the following:

  • Create infrastructure
  • Deploy the application
  • Run tests
  • Collect metrics
  • Destroy temporary environments

\ This approach ensures every deployment follows the same process.

Practical Example With Sevalla

A practical way to apply Infrastructure as Code through APIs is to use a command-line interface that directly interacts with a cloud platform’s API. This allows developers to automate infrastructure creation using scripts rather than dashboards.

\ One example is the Sevalla CLI, which exposes infrastructure operations as terminal commands that can be executed manually or inside automation pipelines.

\ Sevalla is a developer-centric PaaS designed to simplify your workflow. They provide high-performance application hosting, managed databases, object storage, and static sites in one unified platform. Other options are AWS and Azure, which require complex CLI tools and heavy DevOps overhead. Sevalla offers simplicity and ease of use, similar to Heroku.

\ You can install the CLI using the following shell command.

bash <(curl -fsSL https://raw.githubusercontent.com/sevalla-hosting/cli/main/install.sh)

\ Once installed, you can view the list of all available commands using the help command.

\ The first step is authentication. Make sure you have an account on Sevalla before using the CLI.

sevalla login

\ For automated environments such as CI/CD pipelines, authentication can be done with an API token. The token is stored in an environment variable so scripts can run without user interaction.

export SEVALLA_API_TOKEN="your-api-token"

\ Once authenticated, you can quickly view a list of your apps using sevalla apps list

\ Your infrastructure can now be created directly from the command line. For example, a developer might start by creating an application service that will run the backend code.

sevalla apps create --name myapp --source privateGit --cluster <id>

\ This command provisions a new application resource on the platform. Instead of navigating through a web interface and filling out forms, the entire setup is performed through a single command.

\ Because the command can be stored in scripts or configuration files, it becomes part of the project’s infrastructure definition.

\ After creating the application, developers often need a database. That can also be provisioned programmatically.

sevalla databases create \
  --name mydb \
  --type postgresql \
  --db-version 16 \
  --cluster <id> \
  --resource-type <id> \
  --db-name mydb \
  --db-password secret

\ This creates a PostgreSQL database with a defined version and credentials. In an automated workflow, the database creation step could run during environment setup for staging or testing.

\ Once the application and database exist, the next step might be configuring environment variables so the application can connect to the database.

sevalla apps env-vars create <app-id> --key DATABASE_URL --value "postgres://..."

\ These configuration values can be injected during deployments, ensuring the application always receives the correct settings.

\ Deployment automation is another key part of Infrastructure as Code. Instead of manually triggering deployments, a script can deploy new code whenever a repository is updated.

sevalla apps deployments trigger <app-id> --branch main

\ This allows CI/CD systems to deploy new versions of the application automatically after tests pass.

\ Infrastructure automation also includes scaling and monitoring. For example, if an application needs more instances to handle traffic, the number of running processes can be updated programmatically.

sevalla apps processes update <process-id> --app-id <app-id> --instances 3

\ Metrics can also be retrieved through the CLI. This allows monitoring tools or scripts to analyze system performance.

sevalla apps processes metrics cpu-usage <app-id> <process-id>

\ Similarly, application metrics such as response time or request rates can be queried to detect performance issues.

\ Another common step in infrastructure automation is configuring domains. Instead of manually linking domains to applications, a script can add them during environment setup.

sevalla apps domains add <app-id> --name example.com

\ With these commands combined in scripts or pipelines, developers can fully automate the lifecycle of their infrastructure. A CI pipeline could create an application, provision a database, configure environment variables, deploy code, attach a domain, and monitor performance — all without human intervention.

\ Because every command supports JSON output, scripts can also capture values returned by the platform and reuse them in later steps. For example:

APP_ID=$(sevalla apps list --json | jq -r '.[0].id')

\ This ability to chain commands together makes it easy to build powerful automation workflows.

\ In practice, teams often place these commands inside deployment scripts or pipeline steps. Whenever code is pushed to a repository, the pipeline automatically provisions or updates the infrastructure needed to run the application.

\ This approach demonstrates how APIs and automation tools can turn infrastructure into something developers manage the same way they manage application code, through scripts, version control, and automated workflows.

Infrastructure as Code Improves Developer Productivity

One of the biggest benefits of Infrastructure as Code is developer productivity.

\ Developers no longer need to wait for infrastructure changes or manually configure environments.

\ Instead, infrastructure becomes part of the development workflow.

\ When a new feature requires a service, the developer simply adds the infrastructure definition to the repository. The pipeline then creates it automatically.

\ This reduces delays and keeps development moving quickly.

\ It also makes onboarding easier. New team members can spin up a full environment with a single command.

The Future of Infrastructure

Cloud infrastructure continues to evolve toward automation and programmability.

\ Platforms increasingly expose APIs that allow every resource to be created, configured, and monitored through code.

\ This trend aligns naturally with the way developers already work.

\ Applications are built with code. Deployments are automated with code. It makes sense that infrastructure should also be defined with code.

\ Infrastructure as Code with APIs takes this idea even further. It allows infrastructure to be embedded directly into development workflows, pipelines, and internal tools.

\ The result is faster development, fewer configuration errors, and more reliable systems.

Conclusion

Infrastructure as Code has transformed how teams manage cloud environments.

\ By replacing manual configuration with code, organizations gain consistency, automation, and repeatability.

\ Using APIs to control infrastructure adds another level of flexibility. Developers can integrate infrastructure directly into scripts, pipelines, and applications.

\ This approach turns the cloud into a programmable platform.

\ As systems grow more complex and deployment cycles accelerate, the ability to automate infrastructure will only become more important.

\ For modern development teams, treating infrastructure as code is no longer optional. It is the foundation of reliable and scalable software delivery.

\ Hope you enjoyed this article. Learn more about me by visiting my LinkedIn.

\

如何重新设计你正在浏览的每一页网页(或者:巴祖卡低音炮如何启发了我开发这款浏览器扩展)

2026-03-22 23:45:23

TL;DR

Here’s the tool I developed that lets you restyle every web page you’re in, powered by AI → [https://github.com/Royshell/polish]()

Or just download it from the Chrom Web Store here

Most websites are fixed. Polish lets you change them


And now, for the story behind it:

"You gotta see the subwoofer I got! It's like that show on MTV where they upgrade cars!” my dad said as he opened the trunk of his SUV - filled more than halfway with a huge, bazooka-like subwoofer.

\ For the record, growing up in a family of sound lovers and audiophiles, incidents like that were quite common. “We would rather have money for music than for food”, my dad used to say (and still does…). And when that is the attitude, dedicating more than half the trunk of a Mitsubishi Pajero to a subwoofer just made perfect sense.

\ The show my dad was referring to had a name that rhymes with "Hip My Ride" (sorry for being a little P.C. here) - a show where they took cars that were about to fall apart and turned them into something well-designed and useful.

\ That was the moment I had a thought: if cars can be “hipped”, then maybe websites and web applications can too.

\ I was already into CSS back then. I thought about building an open-source browser extension that would let any user modify the design of whatever web page (or web app) they were on. There were already a few tools doing similar things, and I was too busy to dive into building one. For some reason, browser extensions also felt a bit cumbersome at the time.

\ But that was years ago - long before AI agents showed up and changed everything.

\ After getting into the world of AI agents and building a boilerplate for chatbots (https://github.com/Royshell/ai-agent-nest-react-boilerplate), I figured it was time to go back to the old idea - this time with AI, and with features that could actually make websites more accessible.

\ That’s how Polish was born.

Accessibility First

At first glance, Polish might look like a fun and amusing tool - but at its core, it was built to solve a real problem: accessibility.

\ With some experience in accessibility development, I wanted to make sure this wasn’t just about making websites “hipper”, but actually more usable for people who need it.

\ That’s why Polish includes built-in tools like:

  • Font scaling

  • Color adjustments (including dark mode)

  • Contrast improvements

    Dark Mode and Extra Spacing applied

AI Layer

And the more powerful part is this:

Instead of toggling predefined settings, you can simply describe what you need.

Focus Mode

As someone with ADHD, I often find modern websites overwhelming - ads, sidebars, popups, notifications… all competing for my attention - all generate distraction.

\ That is why I added a focus mode - a feature that removes these elements from the page and reduces noise.

\ Sometimes, that’s all you need.

\ removing adds with Focus Mode

\

Style the web however you want.

Ever looked at a website and thought, "This could really use some work?"

\ With the combination of fine-tuned controls with an AI layer, Polish gives you a powerful way to restyle any website - change colors, adjust typography, or completely rethink the look and feel of the page you’re on.

\ Styling google results with Polish

\

Works on (Almost) Every Website

Some websites already offer accessibility features, and occasionally even a built-in focus mode.

\ But they’re inconsistent, limited, and often missing altogether.

\ Polish aims to work everywhere.

\ There’s still a long way to go to reach perfect compatibility, but it’s already working surprisingly well across many sites - and improving continuously.

\ The web was never really meant to be static.

\ For years, we’ve been consuming websites the way they were given to us - fixed, opinionated, and out of our control.

\ But maybe that doesn’t have to be the case anymore. Maybe every website can be adapted to your needs, your preferences, and your focus (even if you don’t have ADHD like me).

\ That’s the idea behind Polish.

\ If that sounds interesting to you, feel free to check it out - https://github.com/Royshell/polish (and if you like it, a ⭐ always helps)

\ The official Chrome extension is now out!

A Firefox version is comming soon.

随着自动化交易的扩展,Zoomex 概述了支持人工智能的流动性与交易执行框架

2026-03-22 22:27:11

Cryptocurrency exchange Zoomex has outlined its liquidity and execution infrastructure strategy as automated trading systems continue to play a growing role in cryptocurrency markets. The exchange said it is adapting its trading environment to meet the requirements of both human traders and algorithmic systems that depend on consistent execution and reliable market data.

Traditionally, liquidity in digital asset markets has been evaluated based on visible order book depth and trading volume. However, as automated trading strategies become more prevalent, the definition of liquidity is shifting toward execution quality how reliably trades can be completed under real market conditions.

According to Zoomex, this shift is influencing how exchanges are assessed, with greater emphasis placed on execution speed, slippage control, and infrastructure stability rather than purely on displayed market depth.

Addressing the Gap Between Visible and Executable Liquidity

A key challenge in cryptocurrency trading remains the difference between visible liquidity and executable liquidity. In some cases, order books may appear deep but fail to sustain that depth when markets become volatile.

This can lead to slippage and inconsistent execution, particularly during periods of high trading activity. For automated trading systems, which rely on predictable market behavior, such inconsistencies can significantly impact performance.

Zoomex stated that its liquidity framework is designed to reduce this gap by ensuring that displayed market depth reflects actual trading capacity. The platform’s infrastructure aims to support stable execution conditions even during changing market environments.

Infrastructure Built for Execution Consistency

As trading becomes increasingly automated, exchanges are being evaluated based on infrastructure performance. Key metrics include execution speed, slippage levels, and the reliability of market data feeds.

Zoomex said its trading architecture has been developed to address these requirements. The platform’s matching engine and liquidity model are designed to support fast order execution while maintaining consistency across different market conditions.

Stable API performance and structured market data delivery are also part of this approach, enabling both individual traders and automated systems to access and respond to market information efficiently.

Liquidity Performance Across Key Markets

Zoomex’s liquidity profile has been examined in independent market analysis comparing major cryptocurrency exchanges. The findings indicate that the platform maintains competitive depth across several widely traded assets.

The analysis recorded more than $62.7 million in BTC spot depth within ±2% of the mid-price, alongside approximately $29.8 million in ETH liquidity, suggesting active participation in high-volume markets. Slippage levels for simulated BTC trades were observed at around 0.03%, indicating relatively stable execution under test conditions.

The platform also demonstrated liquidity distribution across multiple trading pairs, including BTC, ETH, SOL, XRP, and DOGE. This spread of liquidity supports trading strategies that operate across different assets rather than relying on a single market.

Positioning for the Next Phase of Market Structure

The growth of automated trading is contributing to a broader shift in market structure, where execution reliability is becoming a central factor in exchange selection.

A representative at Zoomex noted that the company is aligning its infrastructure with these changes by focusing on liquidity transparency, execution consistency, and system stability:

“As trading becomes more automated, liquidity needs to be evaluated based on execution outcomes rather than just visible depth. Our focus is on building infrastructure that delivers consistent, reliable execution under real market conditions.”

The company indicated that its ongoing development efforts are aimed at supporting this transition, with a focus on building a trading environment that can accommodate both current market participants and increasingly automated trading activity.

About Zoomex

Founded in 2021, Zoomex is a global cryptocurrency trading platform serving more than 3 million users across over 35 countries and regions. The exchange offers 700+ trading pairs and more than 590 perpetual contracts, supported by a high-performance matching engine with interface latency under 10 milliseconds.

Guided by its core values of “Simple × User-Friendly × Fast,” Zoomex focuses on delivering a transparent and efficient trading environment. The platform emphasises fairness, traceable order execution, and clear asset visibility to reduce information asymmetry for users.

Zoomex operates under regulatory registrations including Canada MSB, U.S. MSB, U.S. NFA, and Australia AUSTRAC, and has completed security audits conducted by blockchain security firm Hacken. Asset protection is supported by a multi-signature cold and hot wallet structure.

The exchange is also an official crypto exchange partner of the Haas F1 Team and maintains a global exclusive brand ambassador partnership with professional football goalkeeper Emiliano Martínez.

Learn More

About Zoomex

Twitter: https://twitter.com/zoomexofficial?s=21

Telegram: https://t.me/zoomex_com

Youtube: https://www.youtube.com/@ZoomexYoutube

Instagram: https://www.instagram.com/zoomexofficial_/

:::tip This story was published as a press release by Btcwire under HackerNoon’s Business Blogging Program

:::

Disclaimer:

This article is for informational purposes only and does not constitute investment advice. Cryptocurrencies are speculative, complex, and involve high risks. This can mean high prices volatility and potential loss of your initial investment. You should consider your financial situation, investment purposes, and consult with a financial advisor before making any investment decisions. The HackerNoon editorial team has only verified the story for grammatical accuracy and does not endorse or guarantee the accuracy, reliability, or completeness of the information stated in this article. #DYOR

梳理谋杀案的时间线

2026-03-22 19:00:38

:::info Astounding Stories of Super-Science October 2022, by Astounding Stories is part of HackerNoon’s Book Blog Post series. You can jump to any chapter in this book here. THE MURDER OF ROGER ACKROYD - INSPECTOR RAGLAN IS CONFIDENT

\

Astounding Stories of Super-Science October 2022: THE MURDER OF ROGER ACKROYD - INSPECTOR RAGLAN IS CONFIDENT

\ By Agatha Christie

:::

We looked at each other.

“You’ll have inquiries made at the station, of course?” I said.

“Naturally, but I’m not over sanguine as to the result. You know what that station is like.”

I did. King’s Abbot is a mere village, but its station happens to be an important junction. Most of the big expresses stop there, and trains are shunted, re-sorted, and made up. It has two or three public telephone boxes. At that time of night three local trains come in close upon each other, to catch the connection with the express for the north which comes in at 10.19 and leaves at 10.23. The whole place is in a bustle, and the chances of one particular person being noticed telephoning or getting into the express are very small indeed.

“But why telephone at all?” demanded Melrose. “That is what I find so extraordinary. There seems no rhyme or reason in the thing.”

Poirot carefully straightened a china ornament on one of the bookcases.

“Be sure there was a reason,” he said over his shoulder.

“But what reason could it be?”

“When we know that, we shall know everything. This case is very curious and very interesting.”

There was something almost indescribable in the way he said those last words. I felt that he was looking at the case from some peculiar angle of his own, and what he saw I could not tell.

He went to the window and stood there, looking out.

“You say it was nine o’clock, Dr. Sheppard, when you met this stranger outside the gate?”

He asked the question without turning round.

“Yes,” I replied. “I heard the church clock chime the hour.”

“How long would it take him to reach the house—to reach this window, for instance?”

“Five minutes at the outside. Two or three minutes only if he took the path at the right of the drive and came straight here.”

“But to do that he would have to know the way. How can I explain myself?—it would mean that he had been here before—that he knew his surroundings.”

“That is true,” replied Colonel Melrose.

“We could find out, doubtless, if Mr. Ackroyd had received any strangers during the past week?”

“Young Raymond could tell us that,” I said.

“Or Parker,” suggested Colonel Melrose.

Ou tous les deux,” suggested Poirot, smiling.

Colonel Melrose went in search of Raymond, and I rang the bell once more for Parker.

Colonel Melrose returned almost immediately, accompanied by the young secretary, whom he introduced to Poirot. Geoffrey Raymond was fresh and debonair as94 ever. He seemed surprised and delighted to make Poirot’s acquaintance.

“No idea you’d been living among us incognito, M. Poirot,” he said. “It will be a great privilege to watch you at work——Hallo, what’s this?”

Poirot had been standing just to the left of the door. Now he moved aside suddenly, and I saw that while my back was turned he must have swiftly drawn out the arm-chair till it stood in the position Parker had indicated.

“Want me to sit in the chair whilst you take a blood test?” asked Raymond good-humoredly. “What’s the idea?”

“M. Raymond, this chair was pulled out—so—last night when Mr. Ackroyd was found killed. Some one moved it back again into place. Did you do so?”

The secretary’s reply came without a second’s hesitation.

“No, indeed I didn’t. I don’t even remember that it was in that position, but it must have been if you say so. Anyway, somebody else must have moved it back to its proper place. Have they destroyed a clew in doing so? Too bad!”

“It is of no consequence,” said the detective. “Of no consequence whatever. What I really want to ask you is this, M. Raymond: Did any stranger come to see Mr. Ackroyd during this past week?”

The secretary reflected for a minute or two, knitting his brows, and during the pause Parker appeared in answer to the bell.

“No,” said Raymond at last. “I can’t remember any one. Can you, Parker?”

“I beg your pardon, sir?”

“Any stranger coming to see Mr. Ackroyd this week?”

The butler reflected for a minute or two.

“There was the young man who came on Wednesday, sir,” he said at last. “From Curtis and Troute, I understood he was.”

Raymond moved this aside with an impatient hand.

“Oh! yes, I remember, but that is not the kind of stranger this gentleman means.” He turned to Poirot. “Mr. Ackroyd had some idea of purchasing a dictaphone,” he explained. “It would have enabled us to get through a lot more work in a limited time. The firm in question sent down their representative, but nothing came of it. Mr. Ackroyd did not make up his mind to purchase.”

Poirot turned to the butler.

“Can you describe this young man to me, my good Parker?”

“He was fair-haired, sir, and short. Very neatly dressed in a blue serge suit. A very presentable young man, sir, for his station in life.”

Poirot turned to me.

“The man you met outside the gate, doctor, was tall, was he not?”

“Yes,” I said. “Somewhere about six feet, I should say.”

“There is nothing in that, then,” declared the Belgian. “I thank you, Parker.”

The butler spoke to Raymond.

“Mr. Hammond has just arrived, sir,” he said. “He is anxious to know if he can be of any service, and he would be glad to have a word with you.”

“I’ll come at once,” said the young man. He hurried out. Poirot looked inquiringly at the chief constable.

“The family solicitor, M. Poirot,” said the latter.

“It is a busy time for this young M. Raymond,” murmured M. Poirot. “He has the air efficient, that one.”

“I believe Mr. Ackroyd considered him a most able secretary.”

“He has been here—how long?”

“Just on two years, I fancy.”

“His duties he fulfills punctiliously. Of that I am sure. In what manner does he amuse himself? Does he go in for le sport?”

“Private secretaries haven’t much time for that sort of thing,” said Colonel Melrose, smiling. “Raymond plays golf, I believe. And tennis in the summer time.”

“He does not attend the courses—I should say the running of the horses?”

“Race meetings? No, I don’t think he’s interested in racing.”

Poirot nodded and seemed to lose interest. He glanced slowly round the study.

“I have seen, I think, all that there is to be seen here.”

I, too, looked round.

“If those walls could speak,” I murmured.

Poirot shook his head.

“A tongue is not enough,” he said. “They would have97 to have also eyes and ears. But do not be too sure that these dead things”—he touched the top of the bookcase as he spoke—“are always dumb. To me they speak sometimes—chairs, tables—they have their message!”

He turned away towards the door.

“What message?” I cried. “What have they said to you to-day?”

He looked over his shoulder and raised one eyebrow quizzically.

“An opened window,” he said. “A locked door. A chair that apparently moved itself. To all three I say, ‘Why?’ and I find no answer.”

He shook his head, puffed out his chest, and stood blinking at us. He looked ridiculously full of his own importance. It crossed my mind to wonder whether he was really any good as a detective. Had his big reputation been built up on a series of lucky chances?

I think the same thought must have occurred to Colonel Melrose, for he frowned.

“Anything more you want to see, M. Poirot?” he inquired brusquely.

“You would perhaps be so kind as to show me the silver table from which the weapon was taken? After that, I will trespass on your kindness no longer.”

We went to the drawing-room, but on the way the constable waylaid the colonel, and after a muttered conversation the latter excused himself and left us together. I showed Poirot the silver table, and after raising the lid once or twice and letting it fall, he pushed open the window and stepped out on the terrace. I followed him.

Inspector Raglan had just turned the corner of the house, and was coming towards us. His face looked grim and satisfied.

“So there you are, M. Poirot,” he said. “Well, this isn’t going to be much of a case. I’m sorry, too. A nice enough young fellow gone wrong.”

Poirot’s face fell, and he spoke very mildly.

“I’m afraid I shall not be able to be of much aid to you, then?”

“Next time, perhaps,” said the inspector soothingly. “Though we don’t have murders every day in this quiet little corner of the world.”

Poirot’s gaze took on an admiring quality.

“You have been of a marvelous promptness,” he observed. “How exactly did you go to work, if I may ask?”

“Certainly,” said the inspector. “To begin with—method. That’s what I always say—method!”

“Ah!” cried the other. “That, too, is my watchword. Method, order, and the little gray cells.”

“The cells?” said the inspector, staring.

“The little gray cells of the brain,” explained the Belgian.

“Oh, of course; well, we all use them, I suppose.”

“In a greater or lesser degree,” murmured Poirot. “And there are, too, differences in quality. Then there is the psychology of a crime. One must study that.”

“Ah!” said the inspector, “you’ve been bitten with all this psychoanalysis stuff? Now, I’m a plain man——”

“Mrs. Raglan would not agree, I am sure, to that,” said Poirot, making him a little bow.

Inspector Raglan, a little taken aback, bowed.

“You don’t understand,” he said, grinning broadly. “Lord, what a lot of difference language makes. I’m telling you how I set to work. First of all, method. Mr. Ackroyd was last seen alive at a quarter to ten by his niece, Miss Flora Ackroyd. That’s fact number one, isn’t it?”

“If you say so.”

“Well, it is. At half-past ten, the doctor here says that Mr. Ackroyd has been dead at least half an hour. You stick to that, doctor?”

“Certainly,” I said. “Half an hour or longer.”

“Very good. That gives us exactly a quarter of an hour in which the crime must have been committed. I make a list of every one in the house, and work through it, setting down opposite their names where they were and what they were doing between the hour of 9.45 and 10 p.m.”

He handed a sheet of paper to Poirot. I read it over his shoulder. It ran as follows, written in a neat script:—

Major Blunt.—In billiard room with Mr. Raymond. (Latter confirms.)

Mr. Raymond.—Billiard room. (See above.)

Mrs. Ackroyd.—9.45 watching billiard match. Went up to bed 9.55. (Raymond and Blunt watched her up staircase.)

100

Miss Ackroyd.—Went straight from her uncle’s room upstairs. (Confirmed by Parker, also housemaid, Elsie Dale.)

Servants:—

Parker.—Went straight to butler’s pantry. (Confirmed by housekeeper, Miss Russell, who came down to speak to him about something at 9.47, and remained at least ten minutes.)

Miss Russell.—As above. Spoke to housemaid, Elsie Dale, upstairs at 9.45.

Ursula Bourne (parlormaid).—In her own room until 9.55. Then in Servants’ Hall.

Mrs. Cooper (cook).—In Servants’ Hall.

Gladys Jones (second housemaid).—In Servants’ Hall.

Elsie Dale.—Upstairs in bedroom. Seen there by Miss Russell and Miss Flora Ackroyd.

Mary Thripp (kitchenmaid).—Servants’ Hall.

“The cook has been here seven years, the parlormaid eighteen months, and Parker just over a year. The others are new. Except for something fishy about Parker, they all seem quite all right.”

“A very complete list,” said Poirot, handing it back to him. “I am quite sure that Parker did not do the murder,” he added gravely.

“So is my sister,” I struck in. “And she’s usually right.” Nobody paid any attention to my interpolation.

“That disposes pretty effectually of the household,” continued the inspector. “Now we come to a very grave point. The woman at the lodge—Mary Black—was101 pulling the curtains last night when she saw Ralph Paton turn in at the gate and go up towards the house.”

“She is sure of that?” I asked sharply.

“Quite sure. She knows him well by sight. He went past very quickly and turned off by the path to the right, which is a short cut to the terrace.”

“And what time was that?” asked Poirot, who had sat with an immovable face.

“Exactly twenty-five minutes past nine,” said the inspector gravely.

There was a silence. Then the inspector spoke again.

“It’s all clear enough. It fits in without a flaw. At twenty-five minutes past nine, Captain Paton is seen passing the lodge; at nine-thirty or thereabouts, Mr. Geoffrey Raymond hears some one in here asking for money and Mr. Ackroyd refusing. What happens next? Captain Paton leaves the same way—through the window. He walks along the terrace, angry and baffled. He comes to the open drawing-room window. Say it’s now a quarter to ten. Miss Flora Ackroyd is saying good-night to her uncle. Major Blunt, Mr. Raymond, and Mrs. Ackroyd are in the billiard room. The drawing-room is empty. He steals in, takes the dagger from the silver table, and returns to the study window. He slips off his shoes, climbs in, and—well, I don’t need to go into details. Then he slips out again and goes off. Hadn’t the nerve to go back to the inn. He makes for the station, rings up from there——”

“Why?” said Poirot softly.

I jumped at the interruption. The little man was102 leaning forward. His eyes shone with a queer green light.

For a moment Inspector Raglan was taken aback by the question.

“It’s difficult to say exactly why he did that,” he said at last. “But murderers do funny things. You’d know that if you were in the police force. The cleverest of them make stupid mistakes sometimes. But come along and I’ll show you those footprints.”

We followed him round the corner of the terrace to the study window. At a word from Raglan a police constable produced the shoes which had been obtained from the local inn.

The inspector laid them over the marks.

“They’re the same,” he said confidently. “That is to say, they’re not the same pair that actually made these prints. He went away in those. This is a pair just like them, but older—see how the studs are worn down.”

“Surely a great many people wear shoes with rubber studs in them?” asked Poirot.

“That’s so, of course,” said the inspector. “I shouldn’t put so much stress on the footmarks if it wasn’t for everything else.”

“A very foolish young man, Captain Ralph Paton,” said Poirot thoughtfully. “To leave so much evidence of his presence.”

“Ah! well,” said the inspector, “it was a dry, fine night, you know. He left no prints on the terrace or on the graveled path. But, unluckily for him, a spring103 must have welled up just lately at the end of the path from the drive. See here.”

A small graveled path joined the terrace a few feet away. In one spot, a few yards from its termination, the ground was wet and boggy. Crossing this wet place there were again the marks of footsteps, and amongst them the shoes with rubber studs.

Poirot followed the path on a little way, the inspector by his side.

“You noticed the women’s footprints?” he said suddenly.

The inspector laughed.

“Naturally. But several different women have walked this way—and men as well. It’s a regular short cut to the house, you see. It would be impossible to sort out all the footsteps. After all, it’s the ones on the window-sill that are really important.”

Poirot nodded.

“It’s no good going farther,” said the inspector, as we came in view of the drive. “It’s all graveled again here, and hard as it can be.”

Again Poirot nodded, but his eyes were fixed on a small garden house—a kind of superior summer-house. It was a little to the left of the path ahead of us, and a graveled walk ran up to it.

Poirot lingered about until the inspector had gone back towards the house. Then he looked at me.

“You must have indeed been sent from the good God to replace my friend Hastings,” he said, with a twinkle. “I observe that you do not quit my side. How say104 you, Dr. Sheppard, shall we investigate that summer-house? It interests me.”

He went up to the door and opened it. Inside, the place was almost dark. There were one or two rustic seats, a croquet set, and some folded deck-chairs.

I was startled to observe my new friend. He had dropped to his hands and knees and was crawling about the floor. Every now and then he shook his head as though not satisfied. Finally, he sat back on his heels.

“Nothing,” he murmured. “Well, perhaps it was not to be expected. But it would have meant so much——”

He broke off, stiffening all over. Then he stretched out his hand to one of the rustic chairs. He detached something from one side of it.

“What is it?” I cried. “What have you found?”

He smiled, unclosing his hand so that I should see what lay in the palm of it. A scrap of stiff white cambric.

I took it from him, looked at it curiously, and then handed it back.

“What do you make of it, eh, my friend?” he asked, eyeing me keenly.

“A scrap torn from a handkerchief,” I suggested, shrugging my shoulders.

He made another dart and picked up a small quill—a goose quill by the look of it.

“And that?” he cried triumphantly. “What do you make of that?”

I only stared.

He slipped the quill into his pocket, and looked again at the scrap of white stuff.

“A fragment of a handkerchief?” he mused. “Perhaps you are right. But remember this—a good laundry does not starch a handkerchief.”

He nodded at me triumphantly, then he put away the scrap carefully in his pocket-book.

\

:::info About HackerNoon Book Series: We bring you the most important technical, scientific, and insightful public domain books.

This book is part of the public domain. Astounding Stories. (2008). ASTOUNDING STORIES OF SUPER-SCIENCE, JULY 2008. USA. Project Gutenberg. Release date: OCTOBER 2, 2008, from https://www.gutenberg.org/cache/epub/69087/pg69087-images.html

This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever.  You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org, located at https://www.gutenberg.org/policy/license.html.

:::

\

SeaTunnel × Gravitino:基于 Schema URL 的自动表结构检测

2026-03-22 17:03:38

Recently, the community published an article titled “Say Goodbye to Hand-Written Schemas! SeaTunnel’s Integration with Gravitino Metadata REST API Is a Really Cool Move”, which drew strong reactions from readers, with many saying, “This is really awesome!”

The contributor behind this feature is extremely proactive, and it’s expected to be available soon (according to reliable sources, likely in version 3.0.0). To help the community better understand it, the contributor wrote a detailed article explaining the initial capabilities of the Gravitino REST API and how to use it—let’s take a closer look!

\

1. Background and Problems to Solve

When using Apache SeaTunnel for batch or sync tasks, if the source is unstructured or semi-structured, the source usually requires an explicit schema definition (field names, types, order).

In real production environments, this leads to several typical issues:

  • Tables have many fields and complex types, making manual schema maintenance costly and error-prone
  • Upstream table structure changes (adding fields, changing types) require corresponding updates to SeaTunnel jobs
  • For existing tables, simply syncing data still requires repeated metadata description, leading to redundancy

Thus, the core question is:

Can SeaTunnel directly reuse table structure definitions from an existing metadata system, instead of declaring schema repeatedly in jobs?

\ This feature was introduced to solve this problem.

\

2. Introduction to Gravitino (Relevant Capabilities)

Gravitino is a unified metadata management and access service, providing standardized REST APIs to manage and expose the following objects:

  • Metalake (logical isolation unit)
  • Catalogs (e.g., MySQL, Hive, Iceberg)
  • Schema / Database
  • Table and its field definitions

With Gravitino:

  • Table structures can be centrally managed
  • Downstream systems can dynamically fetch schema definitions via HTTP APIs
  • No need to maintain field information in every compute or sync job

The new capability introduced in SeaTunnel is:

Support for automatically pulling table structures via schema_url provided by Gravitino in the source schema definition.

\

3. Local Test Environment Setup

3.1 Prepare MySQL Environment

3.1.1 Create Target Table

Pre-create the target table test.demo_user in MySQL with the following SQL:

CREATE TABLE `demo_user` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `user_code` varchar(32) NOT NULL,
  `user_name` varchar(64) DEFAULT NULL,
  `password` varchar(128) DEFAULT NULL,
  `email` varchar(128) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `gender` tinyint DEFAULT NULL,
  `age` int DEFAULT NULL,
  `status` tinyint DEFAULT NULL,
  `level` int DEFAULT NULL,
  `score` decimal(10,2) DEFAULT NULL,
  `balance` decimal(12,2) DEFAULT NULL,
  `is_deleted` tinyint DEFAULT NULL,
  `register_ip` varchar(45) DEFAULT NULL,
  `last_login_ip` varchar(45) DEFAULT NULL,
  `login_count` int DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  `ext1` varchar(100) DEFAULT NULL,
  `ext2` varchar(100) DEFAULT NULL,
  `ext3` varchar(100) DEFAULT NULL,
  `ext4` varchar(100) DEFAULT NULL,
  `ext5` varchar(100) DEFAULT NULL,
  `created_by` varchar(64) DEFAULT NULL,
  `updated_by` varchar(64) DEFAULT NULL,
  `created_time` datetime DEFAULT NULL,
  `updated_time` datetime DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `last_login_time` datetime DEFAULT NULL,
  `version` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_code` (`user_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3.1.2 Create the Table Schema to Sync

In practice, table structures might be managed centrally in components like paimonhive, or hudi. For testing, the table schema points to the target table test.demo_user created in the previous step.

3.2 Register the Table Schema in Gravitino

Gravitino supports direct database connections and scans all tables in a database

\ img

\

This table is managed in Gravitino as a table under the local-mysql catalog.

\ img_1

\ Metalake: test_Metalake

3.3 Table Structure Access Explanation

Table structures in Gravitino can be accessed via the REST API:

http://localhost:8090/api/metalakes/test_Metalake/catalogs/${catalog}/schemas/${schema}/tables/${table}

In this test, the actual schema_url used is:

http://localhost:8090/api/metalakes/test_Metalake/catalogs/local-mysql/schemas/test/tables/demo_user

The returned JSON contains the complete field definitions of the demo_user table.

img_2

\

3.4 Local Deployment of SeaTunnel

Since this feature hasn’t been officially released, you need to manually compile the latest dev branch and deploy it locally.

3.5 Prepare Data Files

This test case uses a CSV file containing 2,000 records.

img_3

\

4. SeaTunnel Job Configuration

4.1 Core Configuration Example

env {
  parallelism = 1
  job.mode = "BATCH"
}
source {
  LocalFile {
    path = "/Users/wangxuepeng/Desktop/seatunnel/apache-seatunnel-2.3.13-SNAPSHOT/test_data"
    file_format_type = "csv"
    schema {
      schema_url = "http://localhost:8090/api/metalakes/test_Metalake/catalogs/local-mysql/schemas/test/tables/demo_user"
    }
  }
}
sink {
  jdbc {
    url = "jdbc:mysql://localhost:3306/test"
    driver = "com.mysql.cj.jdbc.Driver"
    username = "root"
    password = "123456"
    database = "test"
    table = "demo_user"
    generate_sink_sql = true
  }
}

4.2 Key Configuration Notes

  • schema.schema_url

  • Points to the table metadata REST API in Gravitino

  • SeaTunnel automatically fetches the table schema at job start

  • No need to manually declare field lists in jobs

  • generatesinksql = true

  • Sink automatically generates INSERT SQL based on the parsed schema

    \

5. Data and Job Execution Results

Log screenshot:

img_4

\ During job execution:

  • Source automatically parses field structure via schema_url

  • CSV fields automatically align with the table schema

  • Data successfully written to MySQL demo_usertable

    \

6. FAQ

6.1 Supported Connectors

Currently, the dev branch supports file-type connectors including localhdfss3, etc.

6.2 Does schema_url support multiple tables?

The feature does not affect multi-table functionality and can be used in combination, e.g.:

source {
  LocalFile {
    tables_configs = [
      {
        path = "/seatunnel/read/metalake/table1"
        file_format_type = "csv"
        field_delimiter = ","
        row_delimiter = "\n"
        skip_header_row_number = 1
        schema {
          table = "db.table1"
          fields {
            c_string = string
            c_int = int
            c_boolean = boolean
            c_double = double
          }
        }
      },
      {
        path = "/seatunnel/read/metalake/table2"
        file_format_type = "csv"
        field_delimiter = ","
        row_delimiter = "\n"
        skip_header_row_number = 1
        schema {
          table = "db.table2"
          schema_url = "http://gravitino:8090/api/metalakes/test_metalake/catalogs/test_catalog/schemas/test_schema/tables/table2"
        }
      }
    ]
  }
}

\

7. Feature Summary

By introducing Gravitino schema_url–based automatic schema parsing, SeaTunnel gains the following advantages in data sync scenarios:

  • Eliminates repeated schema definitions, reducing job configuration complexity
  • Reuses a unified metadata management system, improving consistency
  • Job-friendly in case of table structure changes, significantly lowering maintenance costs

This feature is ideal for:

  • Enterprises with mature metadata platforms

  • Large tables with many fields or frequent schema changes

  • Users seeking improved maintainability of SeaTunnel jobs

    \

8. References

\

落叶松之旅

2026-03-22 17:01:36

:::info Astounding Stories of Super-Science October 2022, by Astounding Stories is part of HackerNoon’s Book Blog Post series. You can jump to any chapter in this book here. THE MURDER OF ROGER ACKROYD - I LEARN MY NEIGHBOR’S PROFESSION

Astounding Stories of Super-Science October 2022: THE MURDER OF ROGER ACKROYD - I LEARN MY NEIGHBOR’S PROFESSION

\ By Agatha Christie

:::

On the following morning I hurried unforgivably over my round. My excuse can be that I had no very serious cases to attend. On my return Caroline came into the hall to greet me.

“Flora Ackroyd is here,” she announced in an excited whisper.

“What?”

I concealed my surprise as best I could.

“She’s very anxious to see you. She’s been here half an hour.”

Caroline led the way into our small sitting-room, and I followed.

Flora was sitting on the sofa by the window. She was in black and she sat nervously twisting her hands together. I was shocked by the sight of her face. All the color had faded away from it. But when she spoke her manner was as composed and resolute as possible.

“Dr. Sheppard, I have come to ask you to help me.”

“Of course he’ll help you, my dear,” said Caroline.

I don’t think Flora really wished Caroline to be present at the interview. She would, I am sure, have infinitely preferred to speak to me privately. But she also wanted to waste no time, so she made the best of it.

“I want you to come to The Larches with me.”

“The Larches?” I queried, surprised.

“To see that funny little man?” exclaimed Caroline.

“Yes. You know who he is, don’t you?”

“We fancied,” I said, “that he might be a retired hairdresser.”

Flora’s blue eyes opened very wide.

“Why, he’s Hercule Poirot! You know who I mean—the private detective. They say he’s done the most wonderful things—just like detectives do in books. A year ago he retired and came to live down here. Uncle knew who he was, but he promised not to tell any one, because M. Poirot wanted to live quietly without being bothered by people.”

“So that’s who he is,” I said slowly.

“You’ve heard of him, of course?”

“I’m rather an old fogey, as Caroline tells me,” I said, “but I have just heard of him.”

“Extraordinary!” commented Caroline.

I don’t know what she was referring to—possibly her own failure to discover the truth.

“You want to go and see him?” I asked slowly. “Now why?”

“To get him to investigate this murder, of course,” said Caroline sharply. “Don’t be so stupid, James.”

I was not really being stupid. Caroline does not always understand what I am driving at.

“You haven’t got confidence in Inspector Davis?” I went on.

“Of course she hasn’t,” said Caroline. “I haven’t either.”

Any one would have thought it was Caroline’s uncle who had been murdered.

“And how do you know he would take up the case?” I asked. “Remember he has retired from active work.”

“That’s just it,” said Flora simply. “I’ve got to persuade him.”

“You are sure you are doing wisely?” I asked gravely.

“Of course she is,” said Caroline. “I’ll go with her myself if she likes.”

“I’d rather the doctor came with me if you don’t mind, Miss Sheppard,” said Flora.

She knows the value of being direct on certain occasions. Any hints would certainly have been wasted on Caroline.

“You see,” she explained, following directness with tact, “Dr. Sheppard being the doctor, and having found the body, he would be able to give all the details to M. Poirot.”

“Yes,” said Caroline grudgingly, “I see that.”

I took a turn or two up and down the room.

“Flora,” I said gravely, “be guided by me. I advise you not to drag this detective into the case.”

Flora sprang to her feet. The color rushed into her cheeks.

“I know why you say that,” she cried. “But it’s exactly for that reason I’m so anxious to go. You’re afraid! But I’m not. I know Ralph better than you do.”

“Ralph,” said Caroline. “What has Ralph got to do with it?”

Neither of us heeded her.

“Ralph may be weak,” continued Flora. “He may have done foolish things in the past—wicked things even—but he wouldn’t murder any one.”

“No, no,” I exclaimed. “I never thought it of him.”

“Then why did you go to the Three Boars last night?” demanded Flora, “on your way home—after uncle’s body was found?”

I was momentarily silenced. I had hoped that that visit of mine would remain unnoticed.

“How did you know about that?” I countered.

“I went there this morning,” said Flora. “I heard from the servants that Ralph was staying there——”

I interrupted her.

“You had no idea that he was in King’s Abbot?”

“No. I was astounded. I couldn’t understand it. I went there and asked for him. They told me, what I suppose they told you last night, that he went out at about nine o’clock yesterday evening—and—and never came back.”

Her eyes met mine defiantly, and as though answering something in my look, she burst out:—

“Well, why shouldn’t he? He might have gone—anywhere. He may even have gone back to London.”

“Leaving his luggage behind?” I asked gently.

Flora stamped her foot.

“I don’t care. There must be a simple explanation.”

“And that’s why you want to go to Hercule Poirot?79 Isn’t it better to leave things as they are? The police don’t suspect Ralph in the least, remember. They’re working on quite another tack.”

“But that’s just it,” cried the girl. “They do suspect him. A man from Cranchester turned up this morning—Inspector Raglan, a horrid, weaselly little man. I found he had been to the Three Boars this morning before me. They told me all about his having been there, and the questions he had asked. He must think Ralph did it.”

“That’s a change of mind from last night, if so,” I said slowly. “He doesn’t believe in Davis’s theory that it was Parker then?”

“Parker indeed,” said my sister, and snorted.

Flora came forward and laid her hand on my arm.

“Oh! Dr. Sheppard, let us go at once to this M. Poirot. He will find out the truth.”

“My dear Flora,” I said gently, laying my hand on hers. “Are you quite sure it is the truth we want?”

She looked at me, nodding her head gravely.

“You’re not sure,” she said. “I am. I know Ralph better than you do.”

“Of course he didn’t do it,” said Caroline, who had been keeping silent with great difficulty. “Ralph may be extravagant, but he’s a dear boy, and has the nicest manners.”

I wanted to tell Caroline that large numbers of murderers have had nice manners, but the presence of Flora restrained me. Since the girl was determined, I was forced to give in to her and we started at once, getting away before my sister was able to fire off any more pronouncements80 beginning with her favorite words, “Of course.”

An old woman with an immense Breton cap opened the door of The Larches to us. M. Poirot was at home, it seemed.

We were ushered into a little sitting-room arranged with formal precision, and there, after the lapse of a minute or so, my friend of yesterday came to us.

“Monsieur le docteur,” he said, smiling. “Mademoiselle.”

He bowed to Flora.

“Perhaps,” I began, “you have heard of the tragedy which occurred last night.”

His face grew grave.

“But certainly I have heard. It is horrible. I offer mademoiselle all my sympathy. In what way can I serve you?”

“Miss Ackroyd,” I said, “wants you to—to——”

“To find the murderer,” said Flora in a clear voice.

“I see,” said the little man. “But the police will do that, will they not?”

“They might make a mistake,” said Flora. “They are on their way to make a mistake now, I think. Please, M. Poirot, won’t you help us? If—if it is a question of money——”

Poirot held up his hand.

“Not that, I beg of you, mademoiselle. Not that I do not care for money.” His eyes showed a momentary twinkle. “Money, it means much to me and always has done. No, if I go into this, you must understand one81 thing clearly. I shall go through with it to the end. The good dog, he does not leave the scent, remember! You may wish that, after all, you had left it to the local police.”

“I want the truth,” said Flora, looking him straight in the eyes.

“All the truth?”

“All the truth.”

“Then I accept,” said the little man quietly. “And I hope you will not regret those words. Now, tell me all the circumstances.”

“Dr. Sheppard had better tell you,” said Flora. “He knows more than I do.”

Thus enjoined, I plunged into a careful narrative, embodying all the facts I have previously set down. Poirot listened carefully, inserting a question here and there, but for the most part sitting in silence, his eyes on the ceiling.

I brought my story to a close with the departure of the inspector and myself from Fernly Park the previous night.

“And now,” said Flora, as I finished, “tell him all about Ralph.”

I hesitated, but her imperious glance drove me on.

“You went to this inn—this Three Boars—last night on your way home?” asked Poirot, as I brought my tale to a close. “Now exactly why was that?”

I paused a moment to choose my words carefully.

“I thought some one ought to inform the young man of his uncle’s death. It occurred to me after I had left82 Fernly that possibly no one but myself and Mr. Ackroyd were aware that he was staying in the village.”

Poirot nodded.

“Quite so. That was your only motive in going there, eh?”

“That was my only motive,” I said stiffly.

“It was not to—shall we say—reassure yourself about ce jeune homme?”

“Reassure myself?”

“I think, M. le docteur, that you know very well what I mean, though you pretend not to do so. I suggest that it would have been a relief to you if you had found that Captain Paton had been at home all the evening.”

“Not at all,” I said sharply.

The little detective shook his head at me gravely.

“You have not the trust in me of Miss Flora,” he said. “But no matter. What we have to look at is this—Captain Paton is missing, under circumstances which call for an explanation. I will not hide from you that the matter looks grave. Still, it may admit of a perfectly simple explanation.”

“That’s just what I keep saying,” cried Flora eagerly.

Poirot touched no more upon that theme. Instead he suggested an immediate visit to the local police. He thought it better for Flora to return home, and for me to be the one to accompany him there and introduce him to the officer in charge of the case.

We carried out this plan forthwith. We found Inspector Davis outside the police station looking very glum indeed. With him was Colonel Melrose, the Chief Constable,83 and another man whom, from Flora’s description of “weaselly,” I had no difficulty in recognizing as Inspector Raglan from Cranchester.

I know Melrose fairly well, and I introduced Poirot to him and explained the situation. The chief constable was clearly vexed, and Inspector Raglan looked as black as thunder. Davis, however, seemed slightly exhilarated by the sight of his superior officer’s annoyance.

“The case is going to be plain as a pikestaff,” said Raglan. “Not the least need for amateurs to come butting in. You’d think any fool would have seen the way things were last night, and then we shouldn’t have lost twelve hours.”

He directed a vengeful glance at poor Davis, who received it with perfect stolidity.

“Mr. Ackroyd’s family must, of course, do what they see fit,” said Colonel Melrose. “But we cannot have the official investigation hampered in any way. I know M. Poirot’s great reputation, of course,” he added courteously.

“The police can’t advertise themselves, worse luck,” said Raglan.

It was Poirot who saved the situation.

“It is true that I have retired from the world,” he said. “I never intended to take up a case again. Above all things, I have a horror of publicity. I must beg, that in the case of my being able to contribute something to the solution of the mystery, my name may not be mentioned.”

Inspector Raglan’s face lightened a little.

“I’ve heard of some very remarkable successes of yours,” observed the colonel, thawing.

“I have had much experience,” said Poirot quietly. “But most of my successes have been obtained by the aid of the police. I admire enormously your English police. If Inspector Raglan permits me to assist him, I shall be both honored and flattered.”

The inspector’s countenance became still more gracious.

Colonel Melrose drew me aside.

“From all I hear, this little fellow’s done some really remarkable things,” he murmured. “We’re naturally anxious not to have to call in Scotland Yard. Raglan seems very sure of himself, but I’m not quite certain that I agree with him. You see, I—er—know the parties concerned better than he does. This fellow doesn’t seem out after kudos, does he? Would work in with us unobtrusively, eh?”

“To the greater glory of Inspector Raglan,” I said solemnly.

“Well, well,” said Colonel Melrose breezily in a louder voice, “we must put you wise to the latest developments, M. Poirot.”

“I thank you,” said Poirot. “My friend, Dr. Sheppard, said something of the butler being suspected?”

“That’s all bunkum,” said Raglan instantly. “These high-class servants get in such a funk that they act suspiciously for nothing at all.”

“The fingerprints?” I hinted.

“Nothing like Parker’s.” He gave a faint smile, and85 added: “And yours and Mr. Raymond’s don’t fit either, doctor.”

“What about those of Captain Ralph Paton?” asked Poirot quietly.

I felt a secret admiration for the way he took the bull by the horns. I saw a look of respect creep into the inspector’s eye.

“I see you don’t let the grass grow under your feet, Mr. Poirot. It will be a pleasure to work with you, I’m sure. We’re going to take that young gentleman’s fingerprints as soon as we can lay hands upon him.”

“I can’t help thinking you’re mistaken, inspector,” said Colonel Melrose warmly. “I’ve known Ralph Paton from a boy upward. He’d never stoop to murder.”

“Maybe not,” said the inspector tonelessly.

“What have you got against him?” I asked.

“Went out just on nine o’clock last night. Was seen in neighborhood of Fernly Park somewhere about nine-thirty. Not been seen since. Believed to be in serious money difficulties. I’ve got a pair of his shoes here—shoes with rubber studs in them. He had two pairs, almost exactly alike. I’m going up now to compare them with those footmarks. The constable is up there seeing that no one tampers with them.”

“We’ll go at once,” said Colonel Melrose. “You and M. Poirot will accompany us, will you not?”

We assented, and all drove up in the colonel’s car. The inspector was anxious to get at once to the footmarks, and asked to be put down at the lodge. About half-way up the drive, on the right, a path branched off86 which led round to the terrace and the window of Ackroyd’s study.

“Would you like to go with the inspector, M. Poirot?” asked the chief constable, “or would you prefer to examine the study?”

Poirot chose the latter alternative. Parker opened the door to us. His manner was smug and deferential, and he seemed to have recovered from his panic of the night before.

Colonel Melrose took a key from his pocket, and unlocking the door which led into the lobby, he ushered us through into the study.

“Except for the removal of the body, M. Poirot, this room is exactly as it was last night.”

“And the body was found—where?”

As precisely as possible, I described Ackroyd’s position. The arm-chair still stood in front of the fire.

Poirot went and sat down in it.

“The blue letter you speak of, where was it when you left the room?”

“Mr. Ackroyd had laid it down on this little table at his right hand.”

Poirot nodded.

“Except for that, everything was in its place?”

“Yes, I think so.”

“Colonel Melrose, would you be so extremely obliging as to sit down in this chair a minute. I thank you. Now, M. le docteur, will you kindly indicate to me the exact position of the dagger?”

I did so, whilst the little man stood in the doorway.

“The hilt of the dagger was plainly visible from the door then. Both you and Parker could see it at once?”

“Yes.”

Poirot went next to the window.

“The electric light was on, of course, when you discovered the body?” he asked over his shoulder.

I assented, and joined him where he was studying the marks on the window-sill.

“The rubber studs are the same pattern as those in Captain Paton’s shoes,” he said quietly.

Then he came back once more to the middle of the room. His eye traveled round, searching everything in the room with a quick, trained glance.

“Are you a man of good observation, Dr. Sheppard?” he asked at last.

“I think so,” I said, surprised.

“There was a fire in the grate, I see. When you broke the door down and found Mr. Ackroyd dead, how was the fire? Was it low?”

I gave a vexed laugh.

“I—I really can’t say. I didn’t notice. Perhaps Mr. Raymond or Major Blunt——”

The little man opposite me shook his head with a faint smile.

“One must always proceed with method. I made an error of judgment in asking you that question. To each man his own knowledge. You could tell me the details of the patient’s appearance—nothing there would escape you. If I wanted information about the papers on that desk, Mr. Raymond would have noticed anything88 there was to see. To find out about the fire, I must ask the man whose business it is to observe such things. You permit——”

He moved swiftly to the fireplace and rang the bell.

After a lapse of a minute or two Parker appeared.

“The bell rang, sir,” he said hesitatingly.

“Come in, Parker,” said Colonel Melrose. “This gentleman wants to ask you something.”

Parker transferred a respectful attention to Poirot.

“Parker,” said the little man, “when you broke down the door with Dr. Sheppard last night, and found your master dead, what was the state of the fire?”

Parker replied without a pause.

“It had burned very low, sir. It was almost out.”

“Ah!” said Poirot. The exclamation sounded almost triumphant. He went on:—

“Look round you, my good Parker. Is this room exactly as it was then?”

The butler’s eye swept round. It came to rest on the windows.

“The curtains were drawn, sir, and the electric light was on.”

Poirot nodded approval.

“Anything else?”

“Yes, sir, this chair was drawn out a little more.”

He indicated a big grandfather chair to the left of the door between it and the window. I append a plan of the room with the chair in question marked with an X.

“Just show me,” said Poirot.

\

The butler drew the chair in question out a good two feet from the wall, turning it so that the seat faced the door.

Voilà ce qui est curieux,” murmured Poirot. “No one would want to sit in a chair in such a position, I fancy. Now who pushed it back into place again, I wonder? Did you, my friend?”

“No, sir,” said Parker. “I was too upset with seeing the master and all.”

Poirot looked across at me.

“Did you, doctor?”

I shook my head.

“It was back in position when I arrived with the police, sir,” put in Parker. “I’m sure of that.”

“Curious,” said Poirot again.

“Raymond or Blunt must have pushed it back,” I suggested. “Surely it isn’t important?”

“It is completely unimportant,” said Poirot. “That is why it is so interesting,” he added softly.

“Excuse me a minute,” said Colonel Melrose. He left the room with Parker.

“Do you think Parker is speaking the truth?” I asked.

“About the chair, yes. Otherwise I do not know. You will find, M. le docteur, if you have much to do with cases of this kind, that they all resemble each other in one thing.”

“What is that?” I asked curiously.

“Every one concerned in them has something to hide.”

“Have I?” I asked, smiling.

Poirot looked at me attentively.

“I think you have,” he said quietly.

“But——”

“Have you told me everything known to you about this young man Paton?” He smiled as I grew red. “Oh! do not fear. I will not press you. I shall learn it in good time.”

“I wish you’d tell me something of your methods,” I said hastily, to cover my confusion. “The point about the fire, for instance?”

“Oh! that was very simple. You leave Mr. Ackroyd at—ten minutes to nine, was it not?”

“Yes, exactly, I should say.”

“The window is then closed and bolted and the door unlocked. At a quarter past ten when the body is discovered, the door is locked and the window is open.91 Who opened it? Clearly only Mr. Ackroyd himself could have done so, and for one of two reasons. Either because the room became unbearably hot (but since the fire was nearly out and there was a sharp drop in temperature last night, that cannot be the reason), or because he admitted some one that way. And if he admitted some one that way, it must have been some one well known to him, since he had previously shown himself uneasy on the subject of that same window.”

“It sounds very simple,” I said.

“Everything is simple, if you arrange the facts methodically. We are concerned now with the personality of the person who was with him at nine-thirty last night. Everything goes to show that that was the individual admitted by the window, and though Mr. Ackroyd was seen alive later by Miss Flora, we cannot approach a solution of the mystery until we know who that visitor was. The window may have been left open after his departure and so afforded entrance to the murderer, or the same person may have returned a second time. Ah! here is the colonel who returns.”

Colonel Melrose entered with an animated manner.

“That telephone call has been traced at last,” he said. “It did not come from here. It was put through to Dr. Sheppard at 10.15 last night from a public call office at King’s Abbot station. And at 10.23 the night mail leaves for Liverpool.”

\n

:::info About HackerNoon Book Series: We bring you the most important technical, scientific, and insightful public domain books.

This book is part of the public domain. Astounding Stories. (2008). ASTOUNDING STORIES OF SUPER-SCIENCE, JULY 2008. USA. Project Gutenberg. Release date: OCTOBER 2, 2008, from https://www.gutenberg.org/cache/epub/69087/pg69087-images.html

This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever.  You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org, located at https://www.gutenberg.org/policy/license.html.

:::

\