Posts
-
Miniflux
I test out the Miniflux feed reader and set it up on my server
-
End of daily blogging
Two months of daily blogging stops now! Cheers!
-
Failing at configuring CORS
I want to test my API from Swagger UI, but failing at CORS. Finally I find a way to disable it altogether in Chrome.
-
Adding an OpenAPI spec
I’d like to have a few different clients for the Habit Tracker API, and so I’m adding an OpenAPI spec to generate them from.
-
Achieving is now tracking
We rename the “achievement” concept to the more obvious “tracking”, and discuss why it is sometimes difficult to name and rename things. At least we’re wearing clean underwear.
-
Finalize API:s to track habits
We discuss how we can use the IDE:s refactoring tools to move logic from the web controller to the service layer, and then reuse that from the API controller to finish the habit tracking API:s.
-
Adding tests for the API:s to track habits
The final API:s to get feature parity with the web app are first described and then implemented tests for.
-
HTTP clients for testing! Which one?
As I continue the implementation and testing of the habits API, I realize I need a HTTP client with JSON support, discuss various alternatives and end up sticking with HttpClient, using a
BodyPublisher
/BodyHandler
pair to deal with the JSON. -
Let's start looking at API:s
I want to add some JSON REST API:s to the habit tracker, and begin with writing a first failing test. Then I figure out some authentication details, add Basic Auth and disable CSRF.
-
More HTML unit
I continue covering the functionality of the Habit Tracker with tests using the HtmlUnit framework, deal with missing support of the ECMAScript Internationalization API and get my test coverage up to 90%.
-
Creating a random user
In order to start tests from a clean slate, since we can’t use the Spring framework’s
@Transactional
annotation in full-server tests, I set up a way to create a random user for each test. And ask myself how to inject beans from the test package. -
Testing with HtmlUnit
I add the HtmlUnit library and use it to test the form login in the habit tracker, and touch upon things like the deprecation of the
java.net.URL
constructors and whether I like HtmlUnit’s approach with generic return types or not. -
A Spring Boot test that runs the full service
Discussing my views on automated testing a little bit and start adding some full service web tests to Hahabit.
-
Adding JaCoCo to Hahabit
As I want to discuss testing of my Spring Boot habit tracker app, I add the JaCoCo code coverage tool to the project and make an
awk
script to extract a relevant number. -
Hahabit: Setting up Spring Actuator
I discuss setting up Spring Actuator for the habit tracker, and how to make sure that the expected version comes online.
-
Setting up Normal Score Converter and fixing a bug
I finish the migration of the Normal Score Converter tool and fix the Google Chrome bug reported to me in 2016.
-
Setting up a wildcard certificate for skagedal.tech
Since I now have three subdomains that need certificates, it’s time to set up a wildcard certificate.
-
Making Normal Score Converter build again
Code necromancing the Normal Score Converter build system, updating some Python code to Python 3 and installing a JavaScript minifier.
-
Presenting Normal Score Converter
Discussing Normal Score Converter, a tool I wrote in 2013 to convert values on common psychometric scales, and how I could bring it up to date.
-
Adding summaries
While exploring my current Jekyll theme, I discover the
excerpt
variable, and finally decide to instead use a customsummary
variable as a blurb for each post. -
Testing Zola
-
Fixing annoying warnings in my blog
-
My docker-java pull request got merged
-
Improving skagedal's oboy
-
The finally green again test suite
-
The test data with invalid Base64
-
Implementing DOCKER_CONTEXT and bisecting a bug
-
The DOCKER_CONTEXT environment variable and testing
-
Submitting a bug to Testcontainers about Colima
-
docker-java and Docker Context
-
Testcontainers and Colima
-
Writing a habit tracker, part 29: Summary so far
-
Writing a habit tracker, part 28: More on Spring dependency management
-
Writing a habit tracker, part 27: Updating dependencies
-
Writing a habit tracker, part 26: Making it somewhat usable
-
Writing a habit tracker, part 25: Exposing it to the Internet!
-
Writing a habit tracker, part 24: Running it continuously
-
Writing a habit tracker, part 23: Running it on the server
-
Writing a habit tracker, part 22: Uploading that JAR
-
Writing a habit tracker, part 21: Building a JAR
-
Writing a habit tracker, part 20: Saving stuff, Access Control
-
Upgrading to Ubuntu 22.04
-
Writing a habit tracker, part 19: A button to achieve a habit
-
Writing a habit tracker, part 18: Getting the user's date
-
Writing a habit tracker, part 17: Reading achievement data
-
Writing a habit tracker, part 16: Listing your achievements
-
Writing a habit tracker, part 15: Adding a new habit
-
Writing a habit tracker, part 14: Storing sessions
-
Writing a habit tracker, part 13: Reading habits from the repository
-
Writing a habit tracker, part 12: Connecting the model
-
Writing a habit tracker, part 11: The habits page
-
Writing a habit tracker, part 10: Continued Spring Security
-
Writing a habit tracker, part 9: Securing some web
-
Writing a habit tracker, part 8: Serving some web
-
Writing a habit tracker, part 7: Achieving habits
-
Writing a habit tracker, part 6: Records and other repository improvements
-
Writing a habit tracker, part 5: A repository
-
Writing a habit tracker, part 4: Functionality and schema
-
Writing a habit tracker, part 3: Setting up Testcontainers
-
Writing a habit tracker, part 2: A skeleton Spring Boot app
-
Writing a habit tracker, part 1: Setting up some tools
-
Stuart Russell: Human Compatible
-
DI, Spring, Micronaut and GraalVM
-
Next on next: Gmail and configuration
-
Next on next and a small argument regarding upgrading.
-
Next: my personal digital assistant
-
Take my hand with vocals
-
Two small song embryos
-
Hello from 2020
-
skagedal.tech
-
The Tetris Diffing Competition
-
Collection View Tetris
-
Creating a Bottom Sheet
-
Specifying device in simcd
-
Xcode Simulator integration in zsh
-
JSON and Decimal numbers
Exploring how decimal numbers are parsed from JSON with Swift and Objective-C
subscribe via RSS