Tweet
I like that now in Osm Admin, all tests pass, and CLI and UI work as expected.

Let's keep it this way.

From now on, all major development will take place in feature branches.

#buildinpublic

osm.software/blog/22/06/dat…
Osm Admin:

👍Yay! After implementing invalid data conversion, I finished the iteration #18 dedicated to diff-based migrations!

#buildinpublic

osm.software/blog/22/05/dat…
I must say, it's a bit disturbing to implement the same thing for the third time. Still, the goal is to get it finished, and have it sustainable.

After the effort, Osm Admin code has become su much easier to read!

#Buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍I continued working on property diff algorithm that plans all the migration details.

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍Yesterday, I finished implementing data conversion for `int` and `string` property types.
👍Then, I started refactoring it.

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍I continued solving data conversion issues (4 solved).

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍I finished implementing `string` property migrations.
👍Migrations have got a meaningful log explaining what migrations take place, and why.
👍Along the way, I fixed numerous issues.

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍Yesterday, I finished writing `int` property migrations. True, testing it is still a todo.

👍The major part of the code (type change, nullability and other attribute handling) will be reused in other property types.

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍I refactored `Property::migrate()` using additional `Migration` classes. It's so much more convenient!

👍New code structure already handles property explicitness changes.

#buildinpublic

osm.software/blog/22/05/dat…
If you are doing something for the first time, don't be afraid to experiment.

#buildinpublic
Osm Admin:

👍After enumerating what kind of changes can happen to a property, I started implementing the most hard one - changing property type.

#buildinpublic

osm.software/blog/22/05/dat…
My latest post about planning projects in terms of problems to be solved rather than hours to be spent.

#buildinpublic

osm.software/blog/22/05/met…
Osm Admin:

👍Bulk UPDATE method is implemented in the TDD way.

#buildinpublic

osm.software/blog/22/05/dat…
Osm Admin:

👍 new ALTER TABLE algorithm
👍 NULL to non-NULL data
👍 conversion
new query test suite

#buildinpublic

osm.software/blog/22/04/dat…
Osm Admin:

👍Adding an explicit property to an existing table, then making it non-nullable.
👍Adding data conversions to table migrations.

#buildinpublic

osm.software/blog/22/04/dat…
You are here to finish things:

1. Define a small step forwards.
2. Make it fail.
* For an internal feature, write a test.
* For a visual feature, sketch a page or an action.
* For a CLI feature, create a command.
3. Make it work.
4. Repeat.

#buildinpublic
Osm Admin:

👍In diff algorithm, I noticed a certain pattern that I use over an over again.
👍Using this pattern, I implemented notification table diff.
👍Finally, I rearranged diff/migration code for better code readability.

#buildinpublic

osm.software/blog/22/04/dat…
Osm Admin:

👍Yesterday, I moved the table creation code into new schema diff migration engine.
👍Now, working on notification table migrations.

#buildinpublic

osm.software/blog/22/04/dat…
I document all the technical debt in "Later" sections of my blog.

And it's not really "debt". When the "later" comes, it may not be relevant anymore, or there may be more important things to do.

I wonder what's a better term?

#buildinpublic
Osm Admin:

👍I found out that the whole search index creation should be done during indexing, not migrations.
👍I refactored diff algorithm and made it much easier to read.

#buildinpublic

osm.software/blog/22/04/dat…