ALX Probation

Week Two

It's the second week of probation and things are getting very intense. I thought last week was intense but the intensity this week made me rethink. I didn't even think I would be able to write this week and it definitely wasn't easy to urge myself to start. Finally started writing but there's no guarantee I'll complete it. More importantly, I hope this content doesn't end up poor due to stress. It would really hurt me to disappoint readers.

This week started with a project on shell redirections. We already grasped the basics of shell last week and learnt about working with permissions but we weren't stopping there, not like ALX was going to let us anyway. Like the word "redirection" suggests, shell redirections basically means setting a new direction, except in this case, we're dealing with the input and output of our terminal commands. There's so much we can do with redirections like redirecting the output of a command that would normally appear in the terminal to a file instead; using the 'greater than (>)', sorting contents of a directory to find and output our most recent files and subdirectories; using the 'sort' command; extracting wanted patterns from a large list and so much more. Lest I forget, the less than(<) sign redirects input instead.

I'm sure you want to know what comes next. Well, a new project was already released the second day even though so many hadn't finished the previous day's. Well, you might say it's the doing hard things part but it's almost impossible to keep up. This project was focused on different concepts altogether and it still had to be completed within 24 hours; there's barely time to breathe. We had to read and understand initialization files, variables and expansions in the shell, while implementing our newly found knowledge to complete difficult tasks. ALX has always preached the Feynman learning technique but can we really keep to it in these conditions?

The third day was a peer learning day; finally some time to breathe but that was all we could do. I remember emphasizing the importance of peer learning days but how productive could it be when most students that make up the "peer" in the phrase are way too busy with the previous projects? I did meet up with some people to share knowledge though, which reminds me; I met some really awesome people on Sunday night while practicing for the first day's project. Meeting the right people really makes a difference so value your connections.

Thursday, and we're officially starting with our first (besides bash) programming language; C. A lot of controversies have spawned concerning its level; some believe it's a low-level language and others affirm that it's high level. Personally, I think it depends on the context, C is high level relative to assembly, B or even Basic. However, it's definitely high level when compared to the likes of Python and JavaScript. The name of the day's "Hello world" could be very misleading. One would be naive to think we just had to output that on the terminal. Infact, it comprised of different tasks of varying difficulties, and none involved printing "hello world". Restrictions were also imposed on what functions we could use. Infact this practice was taken extra seriously on every project this week. It's like ALX's way of saying; "we know there's a more convenient way of achieving this, but we want you to take the hard route". The tasks ranged from the various C compilation processes to figuring out the difference between "puts" and "printf" to writing output to stderr. We also had to follow the Betty coding style and it was really difficult to comply with; even an extra whitespace could make one fail the checks. It took extra effort and dedication but I got used to Betty that same day. By the next day, I could use my phone without installing Betty while still complying with her rules.

The last day of the week was even more intense. Moving from learning the C compilation processes and various printing functions to actual problem-solving using conditional statements and loops all within 24 hours was hard to swallow. This day was seeming like my worst but GOD took control. I failed the checks for the first three tasks and I was really down. Could it be because I used my phone without running Betty checks on my code? Could I be wrong about understanding Betty? I then used the sandbox; that was the only way I could use Betty on my mobile phone. I ran the Betty checks on them and I passed. My code compiles with no runtime error too, so why does the checker claim it didn't compile. So many thoughts ran through my head. I thought I had tried everything, I even had to delete the whole project on my local machine and reclone when "git pull" started acting up. I really thought this was finally my bad day and didn't even bother to check my other tasks; I almost gave up on that project. I prayed for a breakthrough and GOD intervened. As I took another look at the details on checker, it dawned on me that my variable declarations didn't comply with ISO C90's standards. Looks like I have more to worry about besides Betty. Realizing that was a real breakthrough and made fixing my codes easier.

Overall this was the most intense week ever in my perspective. I kinda wish future weeks aren't this stressful but I know ALX is not about to go easy on us. We can only prepare ourselves for the worst.