Oleg Dreyman profile image

Oleg Dreyman

iOS/Swift engineer. Co-founder at nicephoton.com. WWDC 2018 Scholarship winner. Creator @AskYourselfApp, @TimeAndAgainApp, @WFootballApp. Reach at oleg@dreyman.dev

Twitter Site

How and when did you get into programming? And into iOS?

I got into programming when I was maybe 12, was more like an extracurricular activity for me. It was all Turbo Pascal for a few years! For college, I chose a CS major, but after one year it wasn't really clicking for me. We were studying primarily stuff like C#, .NET, Java, etc., and I did not like that at all. I was an incredible Apple fanboy back then, so I guess it was a matter of time for me to get into iOS development and Swift. I did not have a Mac back then, so I was simply devouring WWDC videos, learning Swift mostly by looking at sample code. I got hooked instantly

Turbo Pascal 😮 So you started with Swift and haven't touched ObjC? Do you remember what was your first Swift version?

It was early Swift 2 days! And yup, I did not use Objective-C, Swift was my starting point.

Got it! Do you remember what was challenging to grasp when learning iOS/Swift in the beginning?

Auto Layout, Table Views with its reusable cells, persistence in general and Core Data in particular. I love all of these technologies right now, but when starting, it was challenging: you simply want to get something on the screen, but before you can do that, you need to learn a ton of unusual, abstract, obscure concepts. With iOS & UIKit, everything had a steep learning curve.

Looks like we had pretty similare experiences starting with iOS.. What was your first Apple product?

Oh, it was a 4th Gen iPod touch! Before that I never had a device with a touchscreen, let alone an Apple device. It felt completely magical. I played *so many* games on it. Running the iOS version of Galaxy on Fire 2 was something else. Surreal.

iPod Touch was actually my first ever touch device, but I don't remember much details now.

Lets talk about Paperville a bit. Where did you get the inspiration for this project?

Paperville was my WWDC Scholarship submission that got accepted. It was wild. Believe it or not, but by the time I've submitted that project, I knew it would get accepted. Cause I've cracked the formula! I understood that what Apple wanted from Playground projects is something pretty, interactive and educational. I've tried to follow their own examples quite closely in terms of educational value. I was deep into studying urbanism at that time, so I just had to do something in that vain. And boy did I make it pretty. It's still probably the most visually interesting thing I've made with code, to this day.

Yeah it is super cool and I would ancourage readers to get the Playground and play with Paperville a bit. Are there some Core Animation lessons you learned that still come in handy?

I definitely made a deep dive into Core Animation. Being honest, I don't really use that knowledge day-to-day, but it was super fun. I would say this: if you want to really understand Core Animation, try to understand what the hell ".m34", or "foreshortening", is, and how it works. It's gonna break your mind

So you have just a ton of libraries available on GitHub. One of the recent additions is DateBuilder which has pretty pleasant syntax. What is the process like when you start building new one? Do you kind of "sketch" the result or it is more like let's code it and iterate?

I don't have a process, and that's my bad! Usually I just have a vague image in my head of what I want the API to be, and I go from there. It's not the most efficient way, for sure! But it works for me. Almost all of my open-source libraries were created as a way for me to solve a very real problem.

Well, it worked pretty well so far without a process! Do you maybe have a tips for other devs creating libraries how to get them noticed initially?

No joke - submit your stuff to iOS Goodies! It's open source, and its maintainers are the nicest people ever. If your library is destined to pop off, this is the place where it will start.

On a more philosophical note though: make sure that the library you're creating actually *does* solve a problem. Many things are the solution in search of a problem, which is fun for experimentation purposes, but it doesn't click with people as much

I am certainly looking forward to your new libraries 👍 What about watchOS? Do you currently develop for this platform? Is it something that interests you?

Oh man, I love watchOS. Especially the ClockKit framework — I consider it to be one of the best-designed Apple APIs. I am thinking about bringing some of my apps to watchOS, I think it has great potential

Do you have any kind of wishlist for new watchOS version for next WWDC?

WidgetKit on iOS has the concept of "stacks", where you can put multiple widgets in the stack and it will try to show you the most relevant. Something like that is long overdue on watchOS, where space is very expensive

That would be nice. What about 3rd party watch faces? Yay or nay?

I understand the community enthusiasm around it, but for me it's a big nay. I think if it'll arrive, it'll share the faith of 3rd party keyboards on iOS (anyone remembers those?)

Yea that is possible, on the other hand widgets seem to be quite popular on iOS...

You have pretty cool personal site. Built with Squarespace. What was the experience like creating it? Would you recommend this approach to other devs?

It's not cheap (something like $16 / month), but it landed me my previous job, so it paid for itself at least a few hundred times, haha. So yeah, can recommend. If you're a developer and you don't have a website, make one, it won't hurt

Cool! Now for a bit different question.. You have a magic wand... and can change one thing about iOS development. What?

Now that's a tough one. I honestly don't know! I would surely want to see the new Swift-native persistence solution from Apple. It feels like a big, big missing piece. Other than that - yeah, iOS development is quirky and tricky at times, but you work with what you've got. You get used to it.

To step away from iOS and code. What do you do to relax?

That's a hot topic for me. Last year made me reevaluate so much stuff, I realized that I cannot continue to define myself by my code and my job exclusively. It just doesn't sit well with me anymore. So I started investing much, much more time into hobbies! My favorites are competitive go-kart racing, watching Formula 1, brewing coffee at home and lately cooking! I'm trying to experience lots of different stuff that life can offer, and it certainly helps.

Awesome! Thanks so much for taking the time! Do you want to give someone or something a shoutout

Thank you for having me! It was a lot of fun. Gonna do an unusual shoutout here: go check out John Estropia's CoreStore, it's the best thing that ever happened to Core Data. Can't imagine my life without it, and it deserves even more attention than it already has.

Other chats

All chats