Skip to main content

SSTcore - Swirl String Theory Canonical Core. High-performance C++ library for knot dynamics, vortex systems, and fluid mechanics

Project description

โš™๏ธ SSTcore: Hybrid Benchmark Engine for the Swirl-String Theory

Welcome to SSTcore, the computational backbone for the Swirl-String Theory (SST).
This hybrid C++/Python engine is designed to benchmark field-based gravity, time dilation, and EM swirl-field dynamics using modern numerical methods and a large helping of theoretical audacity. This repository contains the core engine, simulation scripts, and visualizations to explore the swirling depths of รฆther dynamics. We build the C++ SST-Bindings first, and then we can import it into benchmark Python code. When using the C++ SST-bindings to do hard calculations we can run / render Python simulations 10-100x faster.


๐Ÿ’พ Features

  • ๐Ÿš€ High-Performance Core (C++)
    Handles numerically stiff vortex dynamics, EM field evolution, and topological energy exchanges.

  • ๐Ÿ Python Frontend
    For visualization, parameter sweeps, and interactive experiments using matplotlib, numpy, and PyBind11 integration.

  • ๐Ÿ“ฆ npm Package
    Available for Node.js and browser (WebAssembly) via npm install sstcore. Perfect for Angular and other JavaScript/TypeScript applications.

  • ๐Ÿงฒ EM Field Simulations
    Supports generation and animation of rotating 3-phase bivort electric and magnetic field structures.

  • โŒ› Time Dilation & Gravity Models
    Fast comparison of GR vs SST predictions in strong field limits.


Installation Options

Python Package

pip install SSTcore

Resources na pip install (via import)
Na pip install kun je het resources-pad (o.a. Knots_FourierSeries, ideal.txt) zo aanroepen:

from SSTcore import get_ideal_txt_path, get_knots_fourier_series_dir, get_resources_dir

# Basis resources-map (ideal.txt, Knots_FourierSeries, โ€ฆ)
resources_dir = get_resources_dir()

# Alleen Knots_FourierSeries-map
kfs_dir = get_knots_fourier_series_dir()

# Pad naar ideal.txt
ideal_path = get_ideal_txt_path()

Optioneel: stel SSTCORE_RESOURCES in om een vaste map te forceren.

SSTCORE Installation Guide (Windows)

This precompiled sstcore.cp311-win_amd64.pyd file is a pybind11 module compiled for Python 3.11 on 64-bit Windows.

โœ… Installation Steps

  1. Determine your Python version:

    python --version
    
  2. Copy the matching .pyd file into your Python project directory. Example:

    your_project/
    โ”œโ”€โ”€ sstcore.cp311-win_amd64.pyd
    โ””โ”€โ”€ your_script.py
    
  3. In your script:

    import sstcore
    
  4. Use the exposed functions/classes such as:

    vortex = sstcore.VortexKnotSystem()
    vortex.initialize_trefoil_knot()
    

If you encounter an ImportError:

  • Make sure the .pyd file matches your Python version and architecture (64-bit)
  • Recompile using CMake and pybind11 if necessary for other OS

๐Ÿ“ฆ Build & Run

I advise to make use of IDE like CLion, PyCharm or Visual Studio for building and running the project. When using CLion, you can follow these steps: You must install Visual Studio 2022 with C++ support, and then you can use CLion to build the project.

โš™๏ธ Repair MSVC with the Visual Studio Installer

Open the Visual Studio Installer and do the following:

  • Find Visual Studio 2022 Community
  • Click Modify

Make sure the following are selected:

โœ” Individual components: โœ… MSVC v14.3x - x64/x86 build tools โœ… Windows 10 SDK (or 11) โœ… C++ CMake tools for Windows โœ… C++ ATL/MFC support (optional) โœ… C++ Standard Library (STL) After this, reboot CLion and retry the build.

๐Ÿ”ง Use Clang Toolchain (if MSVC is broken)

You can switch CLion to use Clang (LLVM): Install LLVM from: https://github.com/llvm/llvm-project/releases Point CLion to clang++.exe in your toolchain settings You can still use pybind11 + C++23 this way and avoid MSVC issues altogether.

๐Ÿ Install Python Dependencies

Make sure you have Python 3.11+ installed, then create a virtual environment and install the required packages. This might be the time to take a look at Conda, which is a package manager that can help you manage Python environments and dependencies more easily.

conda create -n  SSTcore12    python=3.12
conda activate  SSTcore12 

We now have to at least pip install pybind11 and pip install numpy to run the Python bindings. I recommend to use a requirements.txt file to manage the dependencies of the project, it will reflect my environment.

pip install -r requirements.txt

To keep file up to date: pip freeze > requirements.txt

๐Ÿ› ๏ธ Get pyBind11 inside the project

mkdir -p extern
mkdir -p extern/pybind11
git clone https://github.com/pybind/pybind11.git extern/pybind11

๐Ÿ”จ Build C++ Core

Before building, ensure you have CMake installed and your environment is set up correctly. Download and install CMake https://cmake.org/download/

First initialize the CMake project, this results in a new directory cmake-build-debug-mingw or similar in the project. You can now use the following commands (from project root) to build the C++ core and generate the Python bindings:

mkdir -p build
cd build
cmake ..
cmake --build . --config Release

This command compiles the C++ core and generates the Python bindings using pybind11.

pip install PyQtWebEngine PyQt5 pyinstaller numpy

npm Package (Node.js / Browser)

npm install sstcore

See README_NPM.md for detailed usage instructions.

๐Ÿ“ฆ Test if python receives SST Bindings

python -c "import sstcore; print(sstcore)"

This should return a path to sstcore.*.pyd or the SSTcore package. This indicates that the Python bindings for SSTcore have been successfully built and installed. If this command fails, ensure that sstcore.cp311-win_amd64.pyd is found in the same directory where you run python. When it does not work, you can delete the cmake-build and build folder and try to recompile the C++ bindings from within ./build/ with cmake .. followed by cmake --build . --config Debug again.

๐Ÿ Import the SST Bindings in Python

from SSTcore import VortexKnotSystem, biot_savart_velocity, compute_kinetic_energy

๐Ÿ”จ Load the C++ module dynamically from the compiled path, because the SST Bindings are not installed in the Python site-packages.

import os
module_path = os.path.abspath("C:\\workspace\\projects\\sstcore\\build\\Debug\\sstcore.cp312-win_amd64.pyd")
module_name = "sstcore"

๐Ÿ“Š Run Benchmarks

python tests/test_potential_timefield.py

๐Ÿ“‚ Project Structure

project-root/
โ”œโ”€โ”€ build/
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ example_fluid_rotation.py
โ”‚   โ”œโ”€โ”€ example_potential_flow.py
โ”‚   โ”œโ”€โ”€ example_vortex_ring.py
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ fluid_dynamics.cpp
โ”‚   โ”œโ”€โ”€ thermo_dynamics.cpp
โ”‚   โ”œโ”€โ”€ vorticity_dynamics.cpp
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ src_bindings/
โ”‚   โ”œโ”€โ”€ module_sst.cpp
โ”‚   โ”œโ”€โ”€ py_fluid_dynamics.cpp
โ”‚   โ”œโ”€โ”€ py_thermo_dynamics.cpp
โ”‚   โ”œโ”€โ”€ py_vorticity_dynamics.cpp
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ extern/pybind11/         # <-- Git submodule or manually cloned -- git clone https://github.com/pybind/pybind11.git extern/pybind11
โ”œโ”€โ”€ CMakeLists.txt

๐Ÿง  Author

ORCID: 0009-0006-1686-3961
Conceived, written, and fearlessly pushed into the void by a person undeterred by the collapse of academic consensus.


๐Ÿ“– Documentation

  • Theory Overview
  • Swirl Core Model
  • Benchmarked Results

๐Ÿงƒ Warning

This software may cause:

  • Vortex-based worldview shifts
  • Sudden rejection of spacetime curvature
  • Hallucinations of swirling field lines in your breakfast cereal

๐Ÿ’ฌ Contact

Open an issue or whisper into the รฆther. This code is listening. Always.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sstcore-0.8.2.tar.gz (48.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sstcore-0.8.2-cp314-cp314-win_amd64.whl (38.3 MB view details)

Uploaded CPython 3.14Windows x86-64

sstcore-0.8.2-cp314-cp314-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp314-cp314-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.14macOS 10.14+ universal2 (ARM64, x86-64)

sstcore-0.8.2-cp313-cp313-win_amd64.whl (38.0 MB view details)

Uploaded CPython 3.13Windows x86-64

sstcore-0.8.2-cp313-cp313-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp313-cp313-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.13macOS 10.14+ universal2 (ARM64, x86-64)

sstcore-0.8.2-cp312-cp312-win_amd64.whl (38.0 MB view details)

Uploaded CPython 3.12Windows x86-64

sstcore-0.8.2-cp312-cp312-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp312-cp312-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.12macOS 10.14+ universal2 (ARM64, x86-64)

sstcore-0.8.2-cp311-cp311-win_amd64.whl (38.0 MB view details)

Uploaded CPython 3.11Windows x86-64

sstcore-0.8.2-cp311-cp311-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp311-cp311-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.11macOS 10.14+ universal2 (ARM64, x86-64)

sstcore-0.8.2-cp310-cp310-win_amd64.whl (38.0 MB view details)

Uploaded CPython 3.10Windows x86-64

sstcore-0.8.2-cp310-cp310-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp310-cp310-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.10macOS 10.14+ universal2 (ARM64, x86-64)

sstcore-0.8.2-cp39-cp39-win_amd64.whl (38.1 MB view details)

Uploaded CPython 3.9Windows x86-64

sstcore-0.8.2-cp39-cp39-manylinux_2_39_x86_64.whl (38.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

sstcore-0.8.2-cp39-cp39-macosx_10_14_universal2.whl (49.9 MB view details)

Uploaded CPython 3.9macOS 10.14+ universal2 (ARM64, x86-64)

File details

Details for the file sstcore-0.8.2.tar.gz.

File metadata

  • Download URL: sstcore-0.8.2.tar.gz
  • Upload date:
  • Size: 48.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2.tar.gz
Algorithm Hash digest
SHA256 0f96b95f12306d151685f373acac874a9c7a758a6fbd96408bba53c6ba94cee6
MD5 fd1d6789d0a4f99dec86f8fe22591ef0
BLAKE2b-256 bac2d048e1a180d6a12c55812adfeabcef805cb046fa28cca1d2651ce9a9278c

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 38.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1047a4d84139c6cafa68fbeaf9f4d8d2d0bda9c3c3aaedb6d2e9d35ccfaf03a6
MD5 be9ead8d18adbae3cb8d98a30fba0ac7
BLAKE2b-256 f3bc05a8b0d122c5b10d8c34c81f0cfb60ece8856c80fce187a53d94744ba7d5

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 afabef2da8d747c9b4c8d4d3f8c1dc325a1330ce275fe43a6aafdce69e8ab5e2
MD5 e23c94126b25bf83c84906d60dc2c61e
BLAKE2b-256 ac8ec3f70b8e8187e0f4512035421ce0bf2677778d76b056874ef0953caa5a3c

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp314-cp314-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp314-cp314-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2e73af992959aff4ae3039cab14d1bc55116aa9ca919c08c8890723204e81c0d
MD5 0ad3db0b812709bfa7a0462f80aabbfc
BLAKE2b-256 679cacd7c4b4dc28b782256e65ea8bf78166aba383d4c4c049ec88defab6808c

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 38.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9d58ce343c23abdf4b0850e2aecb0d908567f8aaa93683756e34e83e89cda102
MD5 da3000d75b459cc59c5fbc82927d1ace
BLAKE2b-256 9de8e75ec72e9e30af0a487fa814f9f00d35d3656f5b8ef39b1cddc91c38ae45

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ce08f37eb79887dc6b09fcc0645b923d4f0fa0a3519651d100724822ded768b1
MD5 35fec782c05176e83f12148f5f527722
BLAKE2b-256 ee905470f8af61c0239b94b514b42a7e38b8e74b1f87210b081d0d5f72dd092c

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp313-cp313-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp313-cp313-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 7ef8247b02e675c540570e86f74618cd054ecaba8338ce9fc2177dd9d701ed67
MD5 8605f97069c32b9fd7620f9191eae555
BLAKE2b-256 02bf2843f3760d8320e0e6e3ca895a2cebbaa87ec5d099c6ee1c74b5e89a6bfb

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 38.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9ee8e81089c01307c3b51e5c20b91e6594c92334508856cb8960acb103845d47
MD5 f9b9156861382d2366af7d299e613742
BLAKE2b-256 467c8d0a13057966315d7b248cb2ba2cfb4cd26f88353369ce85ea9e2cf10397

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 262357482024b8385987efb880a11cced196b8d6eabcb6b0a5fbcef7535afec4
MD5 fb0775a937cbb65016c0506f0af1c10a
BLAKE2b-256 46ee78a7fb8bf94cb8c02a593e82955b5323de3dabd6bb7cb99b8866bb35fabe

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp312-cp312-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 6e8be583ad2e7c75307b0df0ecbd934fb824803dd315b9819db0c69d469a5ed2
MD5 4118bcb860eb984e6bc44c80e374b57c
BLAKE2b-256 f6247502fce898ba29ab45c521bedbd3a988f545e0b41c475a2e5250f418aae2

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 38.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eca7e02b3408beeef191d4aae6f187f119b258b8be36dd4c44caab672b0b1163
MD5 25c71deda8df8a9fbff4ff8b0a60a03c
BLAKE2b-256 b5943a1610d935a17273e850e872a5735645f0c6df474d51c6dcf50f962baa85

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7b571fabdec1131270ec287c93a13b56c92e916b583c62d30e38fa32ff388fc4
MD5 76418e5f179b239d71bc635eb57fa412
BLAKE2b-256 a5a84ed441bc70533824cf4425c65f472cc8d7459d13cc8f1c591c10effa0da6

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp311-cp311-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2f0c610fb51c1c2e786846a053d35c356d47b9782d73aa977df9467cbc4bce47
MD5 c747278159b4a36a7ad9cc2f18498618
BLAKE2b-256 ad1f6b25d4f424af82eee06640b7d0b03ef232ce7c71a0e54d41b86a2e681711

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 38.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5798d69d4ca5ab778a7663bf66810dcd0eb7990c29c0208a679b0f274be339b2
MD5 22110f30da4643f339fb543390e817ef
BLAKE2b-256 1106ea7bc7335654e8cbd4e4d809ea230f91f8bc06b67707500279c808bb7e22

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a8b6f159bb2797900a8709c4f937fb541e1714a03a52672d4a3b72a2863728dc
MD5 1077ddf4bba351530685b7abdfb90451
BLAKE2b-256 3ae453bcb06f328be882aef73f33f8289c1fff102e8fa7390f0f029fc29fbdf2

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp310-cp310-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 ba0bd39bf2b0ab84ee907de8b09d29c189c539fd89fbe6737206952e9c02f266
MD5 8178aac039b4fa664f5ea3dae542a9dd
BLAKE2b-256 2b2a502c1aa3a194618b6b7caa6064f29dcc945afef3c5a0b8f2a5a2192f8c52

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sstcore-0.8.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 38.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sstcore-0.8.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a50eab174bb7bee7be782c6582a73be67e4ff743fc95f0eb0c497c4f97a012c7
MD5 98af5dd336177e652daeed3b8682b2af
BLAKE2b-256 2c910bf949334118a3f75991964718e6b1d96f1ae9d70306099a5e6bc9014a2b

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp39-cp39-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a593982a426ee9ca84a83175f2b62cec67bf3f898707ff9c7543cf02b1fd1dfc
MD5 001468e41371658868814ab6d0cb69e6
BLAKE2b-256 d92e49238ffeedfcdef64253e88b456cfd67e6345495c045b7f8aa873723ef35

See more details on using hashes here.

File details

Details for the file sstcore-0.8.2-cp39-cp39-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for sstcore-0.8.2-cp39-cp39-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 4bbbeab80dc3e036c10859f0a5b02c9893d030339a39ccc15641680f5a9a375d
MD5 570f9ce5b015bce3482c343ae896b318
BLAKE2b-256 f77706910f0905b7c0dc0f2676c66380608ed8f80c1cbfb5096139207d1b92ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page