Business Week #1 - The first step
If you want to register your journey, first of all you need a notebook. Is there a better notebook than a blog?
If you want to register your journey, first of all you need a notebook. Is there a better notebook than a blog?
When building list of goals I decided to use Combine to produce stream of data updates and to reload UI only when it's actually needed.
One hundred weeks later I am more or less at the beginning of my business life. That's two years already!
Not according to the plan, but nothing happened this week.
According to the plan nothing happened this week.
Exactly six weeks ago, in the summary of Week 97 I listed a couple of ideas for my self-dev in 2024...
As planned, I spent some time this week trying out `rust` programming learning.
Diving deeper into the Rust language made me finally meet my first problems
Not according to the plan, but nothing happened this week.
According to the plan, but nothing happened this week.
According to the plan, nothing happened this week.
So I became an influencer.
Once we started gathering data the next step was to introduce series calculator checking best & current series of successes for each of daily goals. Actually it took me some time to find an approach that makes sense but it looks like approach I finally took looks like working 💪 I finally decided to recalculate goal progresses once per a change and store them for quick future accesses to limit unnecessary recalculations. By storing data I mean storing in device memory and also in local memory cache for quick access during runtime.
I finally had the opportunity to visit my new flat...
According to the plan, nothing happened this week.
According to the plan, nothing happened this week.
According to the plan, nothing happened this week.
I have my new obsession! I am starting a new project...
Not according to the plan, but nothing happened this week.
According to the plan, nothing happened this week.
One of my business goals is to build a bit of a constant passive income stream. This is why I decided to buy an investment flat as a long-term investment with the plan to get some income from renting it. However, the recent stream of events made me wonder if that ain't the right moment to actually sell it.
Not according to the plan, but nothing happened this week.
One day I woke myself up in the middle of the night with the idea for the mobile app I could create that could let me gain some experience in new technologies I need to learn and does not require a heavy design.
When thinking about development, sooner or later you start thinking about automation of some tasks, processes, tests etc to simply save time when doing the same set of tasks from time to time. And, when you think about automation in world of iOS development, you need to think about Fastlane. This is the one tool to handle app automation in the way you would expect from tool like this in 2k22 - dependencies management, certification, building, testing, distribution - just to mention key areas you can automate using Fastlane.
This week I finally received the keys to my investment flat. This week also put me in doubt about the best way to move forward. The first road is to sell the flat for a higher price if there is someone interested in buying it. The second road is to renovate and rent it for a long-term (a typical load duration is a year). The third road is to renovate it and rent it for a short term.
WWDC week is a very special week of the year...
Not according to the plan, but nothing happened this week.
In July we start the flat renovation.
According to the plan, nothing happened this week.
We nailed it! We basically designed the whole flat within a weekend!
So, the initial plan for this week was kinda different - I wanted to focus on adding goal levels to track progress. However, after some days of testing local notifications I found a bug that could cause duplicated notifications or missing ones depending on moment user launched the app. This is why I started this week trying to fix the bug and also add some unit tests covering logic of selecting time for this notification.
Well, I did nothing actually other than testing / using current app version on daily basis. Life organized my time that way that it was kinda difficult to spend a minute working on app.
Creating goals without defining levels you wanna achieve is like participating in race without a finish line. Goal levels are checkpoints clearly showing you if you actually progress. There is no simpler and better way to monitor your progress.
Swift Charts for me was the shining star of The WWDC 22 week. Surprisingly, for this week I also planned adding little chart to the app presenting in the list progress in completing goal levels. As the app is for now developed based on SwiftUI in version for iOS15, I did not have the opportunity to test Swift Charts, but I believe I'll use it slightly later. Thanks to modularity of the code it shall be super easy to replace current chart rendering with SwiftUI code.
It actually took me six days before I figured out how to approach the logic related with levels completion popups. Luckily a week consists of seven days, that is why the last one was the productive one.
So, this was a very educational week. I dived bit deeper into async/await way of threading in iOS and it actually not only took my breath away but also took significant part of time left for coding. Still, detail screen is under construction, it's already part of app flow. What it's lacking is presentation of data - levels, progress and completed days / strikes. This will be the subject of next week.
Only one hour of week time actually spent on project development is not a perfect way to push the project down the line. But, like it pretty often happens, it's all in the details. Life is not only about one project - it's actually an asynchronous race of multiple threads fighting for resources and the app project is just one of the threads - important one for sure, but not the only one. So it is what it is - detail screen is still under development, but a little progress was still made.
To develop project limited in terms of time to be spent during a week we need a proper tooling. This week was about to create this tooling.
Can you feel a bit unsatisfied even if you worked as long as you planed and actually did some progress on detail screen and also fixed some bugs across the app? Well, sure you can, if you overexpect.
It's actually interesting that pauses happen every 7th week. There is nothing planned here, just a pure coincidence. Or, maybe it is not a coincidence?
Weeks are different - sometimes they give you more time & opportunities to push with your project, sometimes it's the opposite. What is important is to have good flow even if you have very little time - it's so much easier to move on when you are not stuck. The worst thing that can happen is to become stuck with task. The starting point is so high that you don't even try if you feel that your time and energy is limited.
Well, I did nothing actually other than testing / using current app version on daily basis. Life organized my time that way that it was kinda difficult to spend a minute working on app.
Pause - Stuck - Pause. This three-week series did not sound too optimistic for the future, but finally I was able to move on this week. A task that made me freeze for some weeks was implementation of calendar view presenting completed days in a monthly view. Initially I decided not to implement it from scratch but to integrate a library that looks like matching my needs
Finally detail view became understandable for my beloved Tester which is actually a great sign. You know, there are two levels of understanding when developing something. First level of understanding is the one in which developer understands what he created. Second level of understanding is the one in which someone being bit outside understands what you wanted to show. Finally, after couple of iterations we reached a level in which detail screen becomes understandable the outside world which is a great thing!
The last 10-15-20% of something is most difficult to reach. It's one of the variants of Pareto principle - the one principle to rule them all. Right now I am observing it with finishing first milestone of the app - daily goal. For last couple of weeks it seems like next week will be the last one before moving on to next type of goal. But it always ends with realizing that something still is missing and requires adding - editing goal, displaying calendar, fixing calendar, fixing calendar again, and again, and again, deleting goal, updating progress bars of goal, updating date switching and so on and so on.
I'm actually surprised. What is more, my level of surprise rises every week. What I'm surprised with is the fact that I'm still in the game. I'm still developing the app I planned to develop. I started developing, I had several difficult weeks but I'm still progressing. This week is the week when I can celebrate finishing a first milestone - `daily goal functionality`.
I'm currently on holidays so this ain't gonna be typical post describing the progress towards building great dev company of one. Holidays gave me no space for working progress, but also gave some space for thinking and doing some cleanups. One of the things that needed cleaning up was ~50 cards in my mobile Safari browser kept `for later`. This list of course grew for months.
When it comes to visual part, I'm always concerned. On the one hand I feel that I can distinct `not-a-bad` from `not-good` designs. On the other hand, my design skills are comparable to my singing. Trust me, you would not like to hear me singing 😱
Project finally has a tooling to measure actual execution of the project. During this week I focused on finishing first demo of the simple iOS app counting time spent on project.
Well, I did nothing actually other than testing / using current app version on daily basis. Life organized my time that way that it was kinda difficult to spend a minute working on app.
Well, I did nothing actually other than testing / using current app version on daily basis. Life organized my time that way that it was kinda difficult to spend a minute working on app.
This was a week that was designed to become a start of second app milestone - value goals.
Major plan for this week was to start implementing value goals as next feature of the app. However, just before diving deep into the topic I decided to go through my list of goals to simply check what's my structure of goals. And then the lightning just struck me...
It's actually difficult to choose best path to develop upfront. This is why refactor is a phase so popular in software development. You need to accept the fact that it's nearly impossible to produce perfect software from scratch - usually it means having several iterations changing approaches, fixing validation with design patterns or updating naming to be most accurate and so on.
The title of this post in not the accidental - as mentioned before, I focused recently on implementing value goals - second type of goals to be handled by the app. However, as I also recently mentioned, I was wrong for the whole time...
As mentioned recently, a new approach to `Better` app was the only option to move on. This is why this week was so crucial cause I finally drew first sketches of new `add-goal` flow and started implementing it.
That was a good week with lots of fundaments around new goal structure and levels. The crucial change in new approach is the fact that each goal may have levels of different kind that should smoothly work together. This is why it requires new model structure, new validations, new ways to access data and finally display it.
As planned, the beginning of the week started with finishing adding goal levels and spending some time drafting a precise idea for UI & UI of the new goal list.
The last weeks are very theoretical for me. I'd say that they are even too theoretical which sometimes is pretty exhausting, even for a person like me, an uncontrolled learner.
It was meant to be a good week, when after initial preparations we can move on to final developing something. A week has passed by and the only thing that was created is... this summary, created in 6 short minutes.
These weeks are probably the toughest since the beginning of the project...
The big breakthrough happened in the Dots project this week, thanks to one right question that was asked, and the answer was delivered. I was the one to ask the question, Google was the one to deliver the answer.
We came to the weird case when nothing special can be written here...
According to the plan nothing happened this week.
According to the plan nothing happened this week.
According to the plan nothing happened this week.
Finally, I am back on the track! The long-lasting break is over, my brain is already operating on the expected level of focus and I made it this week - the second iteration of the algorithm for secret project Dots is done. It works better & faster! 💪
It was a good week. It was such a good week, that I believe I bet my previous record and spent more than 3 times longer than I should spend on projects every week.
I finally finished the first phase of my secret project `Dots`, btw. recently renamed to `Strings`. So the first phase of my secret project `Strings` is finally over and the other part of our project team can now focus on their part.
According to the plan nothing happened this week.
So it has finally started - creation of new app is on the way! Of course, not to become too optimistic I shall mention that the whole progress related to the app meant spending 30 minutes drawing basic designs, but it's already something and it looks nice. I already feel enthusiastic about it and eager to start coding.
We are considering buying a small flat in the neighborhood for office purposes...
A set of phone calls, a bunch of mail discussions, and a couple of discussions over coffee and it all ends in the lack of transaction (for now). We considered buying some flats both from a developer as totally new ones and from the previous owners in buildings from around 1980. We failed to negotiate a single good deal.
Somewhere deep in my heart, I want to be a writer. This is my kinda dream since I was 19 and I was preparing myself for final exams. The thing is that I always felt too incompetent to start writing. Although, according to my family & friends, my vocabulary and language and the way I write prove that I am a good writer I've always felt the barrier. 21 years later I still feel barrier. It's stupid, but for me writing something is like setting in stone the opinion and my desire to write perfect things makes it sooo difficult to define a perfect and fulfilling final opinion I would be proud of.
I just bought a new monitor. It's LG 27GN880-B - 27" 4K monitor with a 144Hz refresh rate. I planned to purchase a new monitor for months. I've used for a year or so very similar model (the only important difference is the refresh rate of 60Hz) but had to return it when leaving my previous job and in the meantime, I worked on a retro 24" FullHD monitor I have temporarily loaned. I gave myself some time to check if I actually need to purchase a new monitor (the previous model was not the cheapest one) and to check if there is anything alternative.
A week when there is nothing worth mentioning. I'm working hard with my daily fundamental stuff, maybe slightly clarifying different alternative paths of future investments/projects, but still on a very general level.
As foreseen recently, this week was nothing special compared to the last one. Good progress, lots of hard work...
As mentioned in a couple of recent posts, I have a tough time with my side hustle business spending too much time on daily duties. However, this was a perfect opportunity for my wife to have more space for her experiments as usually she is my first software tester from both QA & user points of view.
Usually, things do not go exactly according to the plan. It especially happens if you're not deep into the specific topic and you only have some kind of imagination or a view of the complexity of the task. This time we had the opportunity to experience this issue when setting up our online store.
It's that simple. You need to choose one of two options, you're unsure which one is the best, you take a step back and find the third alternative.
It was meant to be that simple, right? As it occurred, nothing is simple.
The power of background processing always amazes me. Even when doing lots of other things brain is able to think in backgrounds about tasks that need solving.
Another weak, the next website was published.
So, by the end of last week, we had a plan of steps that are required to start selling our digital products to English teachers. This week we precisely executed each step...
Not according to the plan, but nothing happened this week.
Exactly 7 weeks ago I mentioned a plan for Week 57 to release the first version of the online shop to sell online materials for English teachers. Fast forward to week 63 and I can finally announce that the first version of the online shop is live!
We launched our shop at the end of the last week and focused on the promotion of products. The interest in our products was not as huge as we expected based on our previous tests with Facebook selling. The only good thing about it is the fact that it suddenly occurred that our payment method was suspended by the payment operator due to a lack of some formal info on our website and we were not notified about it for nearly 24!
The business side of life is moving forward in 3 directions recently - preparing an investment in the office flat, solving issues with the payment provider in our online shop, and considering purchasing an investment flat.
It was the first time I was a participant in the flat auction. What's not surprising, due to the clean nature of the flat and attractive initial price there were plenty of investors willing to purchase it. We went prepared setting the initial and the emotional borders upfront.
Last week focused on two main topics from the business side of my life - the future of the secret project Strings and purchasing of the office flat.
WWDC23 is over. The race has officially started. The next 3 months is the time when many of us, developers will look for ideas to use new frameworks, new features, and new devices in a unique way to have a chance to get exposed in Autumn, when the new iOS/ watchOS, tvOS, macOS are released, alongside the iPhone, iPad, 🍏 watch, Mac, etc. Not to mention the newly introduced new 🍏 Vision Pro with visionOS and a new spatial approach to the design.
It was a pure holiday week. Sure, I planned to use this time also to watch some WWDC sessions to get inspired or at least get familiar with the new stuff. Sounded like a good plan, right? Well, not exactly. As typically on holidays, plenty of time meant no time at all. But hey, that's the holidays, right?
Well, I did nothing actually other than noting some further ideas on the app functionality. Life organized my time that way that it was kinda difficult to spend a minute working on app.
We've already had several iterations of HMI (Human Machine Interface). Just to mention a few most important ones - physical buttons on machines, keyboard & mouse for PCs, and touch & multi-touch gestures for smartphones. For a couple of years, it sounded like the next iteration will be the voice control, but it looks like the challenges with natural language and privacy impacted heavily on the low adoption of audio assistants.
Since the beginning of this blog I've focused already on several bigger projects...
It was a kinda cooling-down week when nothing particularly special happened. I was in the countryside enjoying nature and working rather physically after hours.
So the first summer week is over and I could not agree that it was a productive one.
Five weeks to go and no progress at all...
According to the plan nothing happened this week.
Finally, I was able to return to my secret project Dots, which in fact should be renamed to my secret project Strings. I received new, updated frames from my teammate and that was a kinda motivational boost to start fixing issues after the first version of the algorithm was released.
Maybe not according to the initial optimistic plan, but nothing happened this week.
Not according to the plan, but nothing happened this week.
Not according to the plan, but nothing happened this week.
Real work on the project has started this week, finally.
Not according to the plan, but nothing happened this week.
Not according to the plan, but nothing happened this week.
It went smoother than I expected.
Another round of progressing towards beta of the Strings project ended with mediocre success.
Not according to the plan, but nothing happened this week.
Not according to the plan, but nothing happened this week.
The good news is that finally this week I finished all the changes I planned after the initial tests of Beta...
I've done it!
I'm sewing again. This time I decided to pick a very general picture of the butterfly to focus on gathering more feelings and calibration data comparing the outcome of the generated image to the real one.
I decided to stop the second iteration of sewing after 1750 lines...
Inversion of control desing pattern is a programming principle increasing modularity of the software. Introducing dependency injections gives us a chance to quickly replace implementations, if needed, without a hassle and without changing anything in main program code.
I like watching Formula 1. One of the principal concepts of the qualifying session, the one that determines the order on the grid during race start, is the way drivers manage tire condition and energy. They typically alternate one push lap and one cool-down lap. This means on one hand, that many laps are the preparation ones, but when it comes to fighting for the best result they are well prepared.
According to the plan, nothing happened this week.
Not according to the plan, but nothing happened this week.
We often tend to forget that something pretty easy to our minds may not be that obvious if we try to describe steps to do something.
It's a weird feeling when you complete the work but the final effect is not as good as you'd expect it to be. I've completed the next great feature in the app but, to my surprise, it exposes the lack of perfection of the product as a whole.
According to the plan, nothing happened this week.
Planning next year in my case is not a simple task.
I do not have any clear business plans for next year other than the clearest of them all - to start selling the outcome of the Strings project. That's my primary business goal and it's above everything. However, I'd like to focus on self-dev too. I defined a couple of areas of my focus...
Not according to the plan, but nothing happened this week.
Not according to the plan, but nothing happened this week.