Daniel Hooper Profile Banner
Daniel Hooper Profile
Daniel Hooper

@DanielcHooper

Followers
9,129
Following
188
Media
144
Statuses
1,090

Software Engineer. I made @PrincipleApp . Former @Apple Engineer on Camera & Photos.

Seattle, WA
Joined October 2011
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@DanielcHooper
Daniel Hooper
4 months
New Post: Making a 3D Modeler, in C, in a Week
Tweet media one
15
89
634
@DanielcHooper
Daniel Hooper
8 months
Apple didn’t give me a bonus for inventing the cursor gesture; I made the prototype before they hired me: The iOS keyboard team called me and said my video resulted in the most duped feature request in the history of Apple’s bug tracker, Radar.
@durreadan01
Adan
8 months
Whoever invented this at Apple deserves a bonus.
221
64
2K
97
299
5K
@DanielcHooper
Daniel Hooper
4 months
There are actually *no* programming languages that express "how computers work"! Not even C. The operating system runs other programs 'between' your lines. CPUs execute both branches of ifs, and magically run multiple lines of your code at once. Your code is just a suggestion
@hoffridder
ɟɟoɥɹǝppıɹ
5 months
@DanielcHooper C is how computers actually work. Learn it and move on to another language if you want
30
1
68
93
178
3K
@DanielcHooper
Daniel Hooper
5 months
What ideas in computer science are universally considered good? My list: - Arrays (1942?) - Functions (1947) - Hashmaps (1953) - The stack (1957) - Processes (1958) - Virtual memory (1959) - TCP/IP (1974)
331
72
3K
@DanielcHooper
Daniel Hooper
4 months
Hacked together a weird spiral Mario game prototype
97
149
2K
@DanielcHooper
Daniel Hooper
8 months
How I made a 3D modeler in C. (4 min) Originally shown at Handmade Seattle conf.
21
89
680
@DanielcHooper
Daniel Hooper
4 months
Even if Object Oriented Programming wasn't slow (it is), reading a OOP-heavy code base sucks because the logic is broken into little pieces and spread all over. Makes it hard to understand the system as a whole.
74
27
587
@DanielcHooper
Daniel Hooper
10 years
We can do better than this. http://t.co/zKVPKVcEBS
Tweet media one
46
334
379
@DanielcHooper
Daniel Hooper
9 years
After almost two years of work, I'm proud to release @principleapp - a prototyping tool you can love. http://t.co/X50sSJcIoR
37
142
336
@DanielcHooper
Daniel Hooper
4 months
People don't understand that C's limited feature set is GOOD, and not something you grow out of: • Syntax doesn't hide expensive/complex operations • Focus on coding and not language trivia • Compiles fast No other mainstream language understands this.
@sanguine_skies
sans 🦀
5 months
@DanielcHooper If you’re looking for very general knowledge as a beginner, C is a great way to learn the fundamentals and problems that come with systems programming. That said, I wouldn’t stick with it once you’re comfortable. Rust and other langs have lots of great features! 😊
1
1
13
27
26
317
@DanielcHooper
Daniel Hooper
5 months
@kiaran_ritchie While I expected Garbage collection as a reply — it is not universally considered good.
7
1
293
@DanielcHooper
Daniel Hooper
4 months
Imagine getting married in a graphics programmer’s test scene (Sponza Palace is a real place in Croatia)
Tweet media one
10
19
275
@DanielcHooper
Daniel Hooper
3 months
It's weird how Apple continues to double down on Swift when even the language's creator says that the type system design is flawed: fundamentally slow and impossible to provide good error messages for.
20
13
263
@DanielcHooper
Daniel Hooper
6 months
I worked on this! Team was 1 designer, 5 engineers, 1 HR manager, 1 project manager, and a few QA folks. Early versions displayed your albums sitting on glass shelves that were tinted slightly green. In a design review, Jony Ive criticized the green tint because "Glass is only
@BasicAppleGuy
Basic Apple Guy
6 months
iPhoto for iPhone debuted 12 years ago. 📸
Tweet media one
Tweet media two
Tweet media three
Tweet media four
28
85
1K
3
12
235
@DanielcHooper
Daniel Hooper
7 years
Yesterday Principle 3.3 shipped. In it, we ported all Swift to ObjC. Swift made 8% of code, but took 41% of compile time and 55% of app size
11
72
223
@DanielcHooper
Daniel Hooper
7 years
To design better: observe people using the design. To program better: observe a CPU executing the code.
5
84
191
@DanielcHooper
Daniel Hooper
8 months
@jisiguo I made the prototype video, but did not work on the implementation at all during my time at Apple. I was on the Photos team.
4
1
194
@DanielcHooper
Daniel Hooper
4 months
Knowing that the CPU is doing *way* more than what C/assembly exposes is useful even in high level languages like Javascript or Python. js example:
2
3
186
@DanielcHooper
Daniel Hooper
4 months
@fortran_enjoyer This debate's practical implication is that if programmers believe C/assembly are what is really happening in the circuitry then they will miss out on whole classes of performance optimizations.
4
2
158
@DanielcHooper
Daniel Hooper
8 months
@uralbayhan0 Gboard came out 4 years after my prototype video was posted to YouTube.
2
0
155
@DanielcHooper
Daniel Hooper
4 months
Next time a programmer says performance doesn't matter, ask them why their phone and laptop are so new. 🍿
16
24
150
@DanielcHooper
Daniel Hooper
4 months
My 3D Modeler article was #1 on Hacker News and got 20,000 visitors in the first 2 days. Glad people are enjoying it
Tweet media one
@DanielcHooper
Daniel Hooper
4 months
New Post: Making a 3D Modeler, in C, in a Week
Tweet media one
15
89
634
4
5
145
@DanielcHooper
Daniel Hooper
6 years
I've been working on Principle for 4 years now, and every release is a labor of love. It means a lot that designers trust my software with their work and get excited about every release.
@PrincipleApp
Principle
6 years
Available now: Principle 4, with supercharged video, animation scrubbing, custom curves, a new video exporter, and way more.
8
49
234
6
12
141
@DanielcHooper
Daniel Hooper
3 months
New Post: "Apple didn't fix Swift's biggest flaw" I explain why Swift compile times are so bad, according to Swift's creator, Chris Lattner.
6
17
130
@DanielcHooper
Daniel Hooper
5 months
What do you recommend to someone that wants to learn systems programming? Rust has a lot of upfront complexity, C has a bad standard library, and Zig is still evolving. I’m leaning towards recommending C with Raylib.
42
2
123
@DanielcHooper
Daniel Hooper
5 months
@SIRHAMY I’d file types under “objectively good” but not “universally considered good”
8
0
122
@DanielcHooper
Daniel Hooper
4 months
I made a brute force approach to 2D area lights: each pixel gets its color by shooting 300 rays in all directions, seeing what color they hit, and averaging. Looks nice! Now to speed it up with Radiance Cascades...
2
3
120
@DanielcHooper
Daniel Hooper
4 months
@FlohOfWoe Wanted to mention this but ran out of room in the tweet, Thank you!
1
0
109
@DanielcHooper
Daniel Hooper
3 years
Took more than a year of work to create web assembly/webgl versions of all the features that Principle gets "for free" from Core Animation and Core Text - but I'm really happy with the result.
@PrincipleApp
Principle
3 years
🥳 Principle 6 with Share to Web is out now! Share your designs to Android, Windows, Linux, macOS and iOS with one click! Learn More:
Tweet media one
12
26
212
5
11
106
@DanielcHooper
Daniel Hooper
9 years
. @austinkleon describes that point as the "Dark night of the soul". Fitting. http://t.co/EHf4z1dpWd
Tweet media one
1
54
102
@DanielcHooper
Daniel Hooper
6 years
I hung out in Figma's offices for a little while to get this working, it was my first time working in an office in 4 years! I had to re-learn what volume to speak in an open office plan 😂
@figma
Figma
6 years
Yes the rumors are true...Principle + Figma are in cahoots 🤠. With our new integration, add advanced animations in @principleapp to bring your Figma designs to life 🐣. Read more:
40
147
684
2
1
94
@DanielcHooper
Daniel Hooper
4 months
@dhanuraashi
dhanuraashi
4 months
@FlohOfWoe @DanielcHooper Yes. C is a good model for how assembly works, but assembly is a bad model for how computers work.
4
3
45
1
0
93
@DanielcHooper
Daniel Hooper
9 months
I found a way to implement defer in C with a combination of cleanup attributes and blocks. Pretty useful for freeing memory and closing file handles. source:
Tweet media one
8
8
84
@DanielcHooper
Daniel Hooper
4 months
@NyxXeres No. You could write a kernel in binary machine code and the CPU would still run instructions out order and prefetch memory, all without your knowledge or control.
4
0
80
@DanielcHooper
Daniel Hooper
7 years
Design is insanely hard.
6
8
76
@DanielcHooper
Daniel Hooper
8 years
So much of design (UI, API, Industrial, etc) comes down to getting the common use case right and not overemphasizing the edge cases.
1
26
75
@DanielcHooper
Daniel Hooper
5 months
@Lunch__enjoyer I’d watch a movie about hashmaps
5
0
76
@DanielcHooper
Daniel Hooper
5 months
This feature is written in C and compiled to web assembly. This is the first release to use arena allocators extensively. Total game changer. It's amazing that a technique as simple as arenas can so profoundly improve both performance and ease of development.
@PrincipleApp
Principle
5 months
Today we introduce the first in a series of improvements to sharing: Overview Mode! Explore and examine your designs on Windows, Mac, Linux, Android, and iOS.
0
0
28
4
1
74
@DanielcHooper
Daniel Hooper
2 years
I wanted to watch a movie, so I asked the GPT-3 AI for recommendations🤯
Tweet media one
4
4
74
@DanielcHooper
Daniel Hooper
11 months
Tried modeling something organic. Hit a gimbal lock bug when making the hands/feet so I gave up on that. But I think this is pretty good for a 3D program made in 6 days! Need to fix a few bugs and then get it in the hands of some real artists
7
5
74
@DanielcHooper
Daniel Hooper
3 months
Swift is an incredibly complicated language – almost as if features were crammed into it just so that code on a keynote slide *looks* simple.
2
5
72
@DanielcHooper
Daniel Hooper
6 years
When I'm struggling to solve an engineering or design problem, It's usually because I don't understand the problem well enough. Trying to remind myself "A problem clearly stated is half solved"
1
13
69
@DanielcHooper
Daniel Hooper
8 months
@memethanjc @uralbayhan0 Genuine answer: @Freerunnering was inspired to make swipeselection after he saw my video.
1
0
67
@DanielcHooper
Daniel Hooper
5 months
@ciekawy The object oriented people have entered the chat 😂
2
0
67
@DanielcHooper
Daniel Hooper
5 months
@benhouston3d I considered including that in my list, but there are so many variations, inappropriate uses, and complexity, I found it hard to say Databases are just one idea or universally good — It's a hashmap turned to 11.
12
1
65
@DanielcHooper
Daniel Hooper
7 years
My most used design tool is definitely Cmd+Control+Shift+4
5
11
61
@DanielcHooper
Daniel Hooper
11 months
I ported my quake level viewer from OpenGL to sokol_gfx.h as a test of the library. I love it. Never going back to plain OpenGL. Great work by @FlohOfWoe
3
4
59
@DanielcHooper
Daniel Hooper
2 months
@RyanEls4 Unfortunately the wires in your computer match the top one.
5
0
59
@DanielcHooper
Daniel Hooper
3 months
Compare Swift to Zig, which has a very small syntax while still having a more powerful generic and build time evaluation features.
2
0
56
@DanielcHooper
Daniel Hooper
8 months
Android’s version of this, Gboard, and the iOS jailbreak SwipeSelection all happened after my YouTube prototype video was posted on May 2, *2012*
3
0
54
@DanielcHooper
Daniel Hooper
4 months
@Jonathan_Blow The knight in chess.
1
1
52
@DanielcHooper
Daniel Hooper
3 months
Heres the internal presentation mentioning how Swift's type checker design results in long compile times and unintuitive error messages, by the creator of Swift.
@DanielcHooper
Daniel Hooper
3 months
New Post: "Apple didn't fix Swift's biggest flaw" I explain why Swift compile times are so bad, according to Swift's creator, Chris Lattner.
6
17
130
1
4
52
@DanielcHooper
Daniel Hooper
8 years
If you're interested in hearing Principle's origin story, I talk about it here.
@brian_lovin
Brian Lovin
8 years
So awesome to chat with @danielchooper about prototyping, design tools, side projects and more @designdetailsfm !
1
1
29
0
5
51
@DanielcHooper
Daniel Hooper
4 months
@fabiofranchino Theres a difference between the inherent complexity of the problem you're trying to solve, and the artificial complexity you created by the way you wrote the code. The *whole point* of OOP is to break up logic and data into lots of little objects and have them all talk to each
7
1
49
@DanielcHooper
Daniel Hooper
9 years
Honored to have @cooper rate @principleapp so highly on their design tools comparison. http://t.co/hXugQ2RV7M http://t.co/TvW29NsTkS
Tweet media one
2
13
50
@DanielcHooper
Daniel Hooper
2 months
I just updated my recent post to include tips to fix slow Swift compile times, better explain Swift's type constraint solver, and address Hacker News nit-picks. I think it's a solid improvement on the original post. Read here:
Tweet media one
3
2
50
@DanielcHooper
Daniel Hooper
4 months
Apple: We spent 5 billion dollars making a chip that is 8% faster Programmer: I spent 5 minutes making a function that won’t finish before the heat death of the universe
2
1
47
@DanielcHooper
Daniel Hooper
7 years
Dear Web People, stop making things animate in as I scroll. It's distracting and it's not going to age well.
2
5
47
@DanielcHooper
Daniel Hooper
8 years
Please don't call user interfaces "sexy"
2
9
44
@DanielcHooper
Daniel Hooper
4 months
New Post: Good Ideas in Computer Science — Ideas every programmer likes and why Garbage Collection and Object Oriented Programming don't count.
Tweet media one
5
5
46
@DanielcHooper
Daniel Hooper
4 months
@FlohOfWoe The CPU also chops up assembly instructions into even smaller bits and runs those.
2
0
44
@DanielcHooper
Daniel Hooper
8 years
3D Touch is doomed to become hamburger drawer 2.0: A place for extra features that no one will discover.
8
18
44
@DanielcHooper
Daniel Hooper
9 years
Took an entire month, and a lot of phone calls with the review board, but they finally approved Principle Mirror!
@PrincipleApp
Principle
9 years
Principle Mirror is now on the App Store!
4
22
49
8
8
42
@DanielcHooper
Daniel Hooper
4 months
My 3D modeler post is getting 500 visitors a day, but the video that goes with it gets 10,000 views a day! So my upcoming posts are also going to get accompanying videos.
4
2
41
@DanielcHooper
Daniel Hooper
9 months
Websites don’t need a dumb progress bar at the top of the page to show how far through the article you are, the browser already has that. It’s called the scroll bar.
0
3
39
@DanielcHooper
Daniel Hooper
7 years
This past weekend I gave a talk about Principle and why I created it.
2
4
37
@DanielcHooper
Daniel Hooper
3 months
@meoyawn 1. Add a flag to swiftc that switches off bidirectional type checking. 2. Make a feature that updates existing code with any type annotations that are now necessary to compile. 3. Update all sample code so it compiles with the flag. 4. Enable the flag by default for new
3
0
37
@DanielcHooper
Daniel Hooper
3 months
Instruments finally has a flame graph view 🙌
Tweet media one
4
4
35
@DanielcHooper
Daniel Hooper
9 months
@mrdoob I keep a pc around for gaming, but I hate using it. Mac for everything else.
3
0
35
@DanielcHooper
Daniel Hooper
6 years
I enjoy engineering and product design more than making marketing materials, but I had a blast making the new devices for the Principle website. Amazing what you can do with a few gradients and shadows.
Tweet media one
Tweet media two
0
1
34
@DanielcHooper
Daniel Hooper
8 months
I'm sad to hear the Apple Infinite Loop store is closing. My first office at Apple was on the floor above it. It was cool to work on something and later go downstairs to the store and see people using it.
Tweet media one
2
1
35
@DanielcHooper
Daniel Hooper
4 months
@Love2Code Depending on the specific microcontroller you might still have a memory hierarchy doing things without your knowledge. But yeah the more exotic stuff with instruction reordering and speculative execution probably won’t be happening behind your back.
1
0
33
@DanielcHooper
Daniel Hooper
7 years
Reserve animations for communicating things like hierarchy, directing attention, and feedback on interactions.
0
3
33
@DanielcHooper
Daniel Hooper
4 months
@PrometheusHides It's not the operating system that runs your code out of order and executes both branches of your ifs — the chip does that all on its own.
1
0
32
@DanielcHooper
Daniel Hooper
8 years
Tweet media one
0
18
32
@DanielcHooper
Daniel Hooper
11 months
Hardware is cool and all, but with today's software practices I'd settle for updating the Alan Kay quote: "People who are really serious about software should make their own hardware" to: "People who are really serious about software should write their own software"
1
4
32
@DanielcHooper
Daniel Hooper
8 months
𝕏 feature to prevent dumb replies
Tweet media one
5
0
30
@DanielcHooper
Daniel Hooper
4 months
@zjpea @fortran_enjoyer This talk touches on a few: Sections 5 and 6 in "Computer systems: A programmer's perspective" are good. This course goes even deeper, but you'll have to quit your job and say goodbye to your friends to get through it all.
1
1
30
@DanielcHooper
Daniel Hooper
2 years
@andy_kelley using Zig for side projects has made working in my main C project almost unbearable. Nice work :)
0
2
30
@DanielcHooper
Daniel Hooper
11 months
You can now try my made-in-a-week 3D modeler in your browser: Doesn't have saving or undo yet. Let me know if you make anything cool!
Tweet media one
1
0
30
@DanielcHooper
Daniel Hooper
5 months
@samxpatterson "I call it my billion-dollar mistake…At that time, I was designing the first comprehensive type system for references in an object-oriented language. My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the
0
0
29
@DanielcHooper
Daniel Hooper
7 months
We’re looking to hire a graphics programmer to work with us on @PrincipleApp Description below. DM for additional details. RTs appreciated
3
18
28
@DanielcHooper
Daniel Hooper
2 years
Principle's first triangle drawn with Metal
Tweet media one
1
0
29
@DanielcHooper
Daniel Hooper
5 months
@PeterAJepson "operating systems" contain many ideas, what specifically is good about them? I picked Processes and Virtural memory.
2
0
28
@DanielcHooper
Daniel Hooper
8 years
It's been a wild year...
@PrincipleApp
Principle
8 years
Today is Principle's first birthday, and it has a present for you!
Tweet media one
13
77
216
5
1
29
@DanielcHooper
Daniel Hooper
8 months
4 of the 5 design tools represented by this 2014 panel no longer exist. Was a crazy time for design tools back then.
@ClarkValberg
Clark Valberg
8 months
@nlevin @jasonfried @Kazanjy Noah, one of my all time fav Design Leaders, ironically ;) I still remember Google Form in 2014 🫶🏽
Tweet media one
2
0
27
8
4
27
@DanielcHooper
Daniel Hooper
6 years
In macOS Mojave, toolbar icons shake while being edited, just like the iOS home screen!
2
7
28
@DanielcHooper
Daniel Hooper
4 months
Apple picked my game Percepto as game of the week in 2011 thanks, in part, because I literally did go door to door on my university campus asking people to play it. Helped find bugs and smooth out the difficulty ramp.
Tweet media one
@yacineMTB
kache
4 months
you're having trouble marketing your app. but jehova's witnesses aren't having trouble marketing their religion have you gone door to door and asked people if they'd be interested in your app? how many sales would you have to do, door to door? have you really tried??
34
33
605
1
1
25
@DanielcHooper
Daniel Hooper
9 years
I'm told that my iPad keyboard prototype design was the most-duped bug in the history of Apple. and now its in iOS 9.
1
12
26
@DanielcHooper
Daniel Hooper
11 months
My 3D Modeler: a single c file with 1628 lines. 17 functions. (+raylib & raygui) Executable size: 1.1 Mb.
5
0
26
@DanielcHooper
Daniel Hooper
5 months
@PeterAJepson Ok, yeah I think architecture-agnostic programming language deserves a place on the list.
2
0
25
@DanielcHooper
Daniel Hooper
8 years
Interesting to see parts of Principle get ripped off by people who don't understand *why* they're that way, and so inadvertently mess it up.
0
0
25
@DanielcHooper
Daniel Hooper
9 years
"Pixate adds to our ongoing effort to d̶e̶v̶e̶l̶o̶p̶ n̶e̶w̶ buy all design and prototyping tools" — Google
1
6
23
@DanielcHooper
Daniel Hooper
5 months
@SirLynix Pretend I wrote "packet switching" instead of TCP/IP
0
1
24