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.1.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.1-cp314-cp314-win_amd64.whl (38.2 MB view details)

Uploaded CPython 3.14Windows x86-64

sstcore-0.8.1-cp314-cp314-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp314-cp314-macosx_10_14_universal2.whl (49.8 MB view details)

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

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

Uploaded CPython 3.13Windows x86-64

sstcore-0.8.1-cp313-cp313-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp313-cp313-macosx_10_14_universal2.whl (49.8 MB view details)

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

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

Uploaded CPython 3.12Windows x86-64

sstcore-0.8.1-cp312-cp312-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp312-cp312-macosx_10_14_universal2.whl (49.8 MB view details)

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

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

Uploaded CPython 3.11Windows x86-64

sstcore-0.8.1-cp311-cp311-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp311-cp311-macosx_10_14_universal2.whl (49.8 MB view details)

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

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

Uploaded CPython 3.10Windows x86-64

sstcore-0.8.1-cp310-cp310-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp310-cp310-macosx_10_14_universal2.whl (49.8 MB view details)

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

sstcore-0.8.1-cp39-cp39-win_amd64.whl (38.0 MB view details)

Uploaded CPython 3.9Windows x86-64

sstcore-0.8.1-cp39-cp39-manylinux_2_39_x86_64.whl (38.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

sstcore-0.8.1-cp39-cp39-macosx_10_14_universal2.whl (49.8 MB view details)

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

File details

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

File metadata

  • Download URL: sstcore-0.8.1.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.1.tar.gz
Algorithm Hash digest
SHA256 2a330516cb4536af32e8e39801639f8ac65a79ecd1be90d3354d281534f0c609
MD5 67eaa0872d92b19ad3ca50bb89b03705
BLAKE2b-256 9324cab3d243b64fcac69747f8db6eb509c5c6447d0583e12c946e7adb6c3ab4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 38.2 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e22da88e17202e742631ace892c51cb2aa02e639bd9baf9584651f3ce47f1538
MD5 efdba059f86972979ac6dc0a83bd0c10
BLAKE2b-256 13069d08bf3c970af5bd621c4c9b281d9eae8aa707c9127145b4c91ded796242

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 75087291d2d34dcbb05ecaba7e87c7d6942354ab59856920644884d156f5bc53
MD5 bc95d1b5d9564a6abca8ce3e3daa9a0f
BLAKE2b-256 a49ca6e385650d34703059a1f010a6f81b283fa5652e71a96c322c056047e3ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp314-cp314-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 6f8e2c0edf488155c6b82ddf9993b52ae3da024bc9bb7adac0d07dad20e99e73
MD5 5ddb474c0feff11fccc587e432262b4a
BLAKE2b-256 6f8008bed7f63224c1923a3bd0b8a93c1eeb6ac4efc36996210e86799c6b9319

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 673a998944aada4087cc7d98c367e30bee0f6fa5e0003b35fcbfb0ea1b921fae
MD5 1ae6944ad83dd4e7e633b95936b4b0a6
BLAKE2b-256 e3012a0f68f9f100304ea27976e3aa0e4a72c82a4c6a668eba63c9014287b4c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 c87d7ccd0c679b431b26e307c52b8b4cbf9a5436c87c50b3b2bccbf38f3fff36
MD5 0a0bd903654b44576545a3c67926714a
BLAKE2b-256 9aba9f55947e49282d6dd2cf78c9eef9f232768a3307a83e560380faef446d36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp313-cp313-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 d1bfc20a4a52e960245d5837c91d695b1c47815a097b85ca50d5b3bba2b61cac
MD5 15145eecff892ea02b918ba0ddca42c9
BLAKE2b-256 44f0da121d75cce6bb52d5aae6bc6204b5d5274f25e0704ff1867892e526a9bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 504e852fa1205693a23a3bbc4941b714eb6f1872a4a5b10867c2076508e2bdec
MD5 6a1f1665025ed3218e1478c8bff81a55
BLAKE2b-256 1a83fbdc1c896be0c0887a68fb36e66b51324167986cf3fdf9509eacd92b1dea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1816c7ac05cbd09086797586532a222863ab5393b8c7f1df025417011d6db354
MD5 061a5104e731d48507f5d44c30487c3c
BLAKE2b-256 59b66b835ba99d5c3b0a9be0ee13b5de2a22b014a4ff05e1de93883deacdcaae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 bc0793cb0e33857de7b23602ab686bf5af0d0ae5b6a0f0799d3da5b6c20ab14a
MD5 c1d18ff92fafe9a7067440eb0f678ddb
BLAKE2b-256 1641a28cc90f4d12835dd5ab2657ca4c75c881484d57dacaa0cb3bc225e46cba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b3083efdde514dc36728af05153fbbeda7df8ba8cf935ffea321b16c44f12fb2
MD5 45719867a669c2d4863069261d9f1ca0
BLAKE2b-256 449206bd8fd74ae30b9f7f7210cad7519a56c4f44d2cc3d8a50c622a157cdd27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6a73145d924d169040293373c1d01907e71799d8606da64517801293a56170dd
MD5 b37ff0216ff355d274b82a6c9159b4a8
BLAKE2b-256 5b056216588af371d29a024391f2f3d1fa4d92a1770764a9a585c3a08f444cf5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 366c02800b075beda9bc59bba8df7cabdb91cb7366ce428c5175846626a8adc6
MD5 79bdb6b25a3eba77d2ac69c04f6691de
BLAKE2b-256 b53b124850973949c1586674ccff5901bae26b36cf9a00d9616eda69c0dba0b4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 eaed5737d21e3335388827606e8d3b050f2ef7ed7a39d24d168a1acda27d2479
MD5 191f5c8fa0d7877c65928b7055e8448d
BLAKE2b-256 2f52f6482d8a3997c2bdbfbd40ddbc63ea76fb893483e7874d6cb2094b34b745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 04208c17271eb295d7b1872b5a817f0a6c81b58e64ca3865f7f72bf64cf0f9ce
MD5 aa70407e8c9e2fb2445fd1b2ca929d28
BLAKE2b-256 6f460cf04fac64c805e693f5e676eddeec5ed15061bed1279822eeb1e6282293

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 86f414b655d2e215d80692c3d7d9c212dc3ce26c4eb3f077367a31d884746483
MD5 023785a57a1623b7b6aae33985e7e3b1
BLAKE2b-256 ba09e24a7082d0477dfbd5d568faf36a9e63b76b4a9ee584c2d5cd8bf77f2c1f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sstcore-0.8.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 38.0 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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9d7ef92be1522535a316c9d510b495abcce4f76be93f4507070f596619e4b94d
MD5 4a0d64bb4cd2077c2625b4e5f34204bf
BLAKE2b-256 f3bbebe99aa8e5bbcb8b3f75da7e6789575140287e2094f9f9fc559eb7c1c8cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 0e09c2cf90a15c3dd9b4f097d629a3315d965db9f2bdccfeb64790485282c4ee
MD5 3fc449023aa3ad7d83513bcc437d6ff6
BLAKE2b-256 9f7b56837502bebf254d6ae520262eed89db1a277800216523f727d9445e6ac3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sstcore-0.8.1-cp39-cp39-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 a9298d306dce243730a97f4ef859a7893fc98212ace22ce36faac4db0feccf1c
MD5 16155a776e22d250cd259e981f74abe2
BLAKE2b-256 41a0120f7fd86e38db1bc7cc81a76f921f2e9ef74b26b00d1e65c510cc1aeeeb

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