Weekly Digest 03/25

Apple developing new 15-inch MacBook Air that could come in 2023:

According to DSCC supply chain information, Apple is planning a new variant of the MacBook Air for 2023 that will feature a screen size of around 15-inches. The company is also reportedly planning to increase the display of the current 13.3-inch MacBook Air to something that is “slightly larger” but still between 13-inches and 14-inches.

💻

Considering the new MacBook Pros with the notch and the thin bezels, I think the new MacBook Air probably may come in 13″ & 15″ or 14″ & 16″. My bet is on the latter. This is a good move by Apple.

During the pandemic, my son was force to be virtual in 2nd grade and he was using a MacBook Air. The screen size although decent, for him it always felt not enough. Making a larger screen would be perfect for school.

And of course I’m looking for more colorful MacBook Air’s these things are begging to be personalized.


An Introduction to Generics:

Generics are a big new language feature in 1.18. These new language changes required a large amount of new code that has not had significant testing in production settings. That will only happen as more people write and use generic code. We believe that this feature is well implemented and high quality. However, unlike most aspects of Go, we can’t back up that belief with real world experience. Therefore, while we encourage the use of generics where it makes sense, please use appropriate caution when deploying generic code in production.

That caution aside, we’re excited to have generics available, and we hope that they will make Go programmers more productive.

👨🏻‍💻

I like this blog post. Great explanation of a new programming feature and ending it with an honest request to the community to use generics to help make it better over time.


The Four Innovation Phases of Netflix’s Trillions Scale Real-time Data Infrastructure:

My name is Zhenzhong Xu. I joined Netflix in 2015 as a founding engineer on the Real-time Data Infrastructure team and later led the Stream Processing Engines team. I developed an interest in real-time data in the early 2010s, and ever since believe there is much value yet to be uncovered.

📺

This was one of those articles that I shared after reading a few paragraphs. Zhenzhong talk about the four phases of real-time data infrastructure’s journey in Netflix. I enjoyed reading this cause every time Netflix had a business motivation they had unique challenges on the way, the bets they played and the learnings they had along the way have clearly shaped Netflix to what they are today.


TUIC:

TUIC was designed on the basis of the QUIC protocol from the very beginning. It can make full use of the advantages brought by QUIC. You can find more information about the TUIC protocol here.

👨🏻‍💻

This is pretty cool. Something to play with for the weekend 🙂


Excited about this:

Go 1.18 released with Generics support

Go 1.18 isn now generally available. This release supports generics which a lot of us have been waiting for. This is still the very first version to support generics and I believe this feature will gain more support and updates in the upcoming features.

From the Go blog:

In Go 1.18, we’re introducing new support for generic code using parameterized types. Supporting generics has been Go’s most often requested feature, and we’re proud to deliver the generic support that the majority of users need today. Subsequent releases will provide additional support for some of the more complicated generic use cases. We encourage you to get to know this new feature using our generics tutorial, and to explore the best ways to use generics to optimize and simplify your code today. The release notes have more details about using generics in Go 1.18.

Go Tutorial does an excellent job explaining how to use generics. I think they did a good job defining this functionally. The code is so much readable.

// SumIntsOrFloats sums the values of map m. It supports both int64 and float64
// as types for map values.
func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
    var s V
    for _, v := range m {
        s += v
    }
    return s
}

The [K comparable, V int64 | float64] tells me that you can either send either int or float values to this function.

It makes me wonder if there are product managers for programming languages or not? And, if yes, would love to talk to someone about their experience.