Jim Fisher

Developer of Vidrio, the future of presentation. Other topics include C, UNIX, and networking.

Blog. Public speaking. Friends. Vidrio.
Mon, Aug 28: C extern functions Tue, Aug 29: A calendar view for this blog
Mon, Aug 21: C include is not an import Tue, Aug 22: Inspecting Mach-O files Wed, Aug 23: Sentence wrap Thu, Aug 24: Plugin architecture with dlopen Fri, Aug 25: dlopen syscalls Sat, Aug 26: Static linking in C Sun, Aug 27: What is extern in C?
Mon, Aug 14: Promoting Vidrio Tue, Aug 15: Greater-than is redundant Wed, Aug 16: How do Reddit thumbnails work? Thu, Aug 17: Adding Open Graph meta tags to vidr.io , Marketing works! Fri, Aug 18: Example of stdatomic Sat, Aug 19: Generics in C?
Mon, Aug 7: www.jameshfisher.com Tue, Aug 8: Hosting this blog on Netlify Wed, Aug 9: The rel=canonical tag Fri, Aug 11: How do peer-to-peer programs discover each other? Sat, Aug 12: Building a .dmg to distribute MacOS apps Sun, Aug 13: Distributing a MacOS .dmg
Tue, Aug 1: Observing system calls with dtruss Wed, Aug 2: A short malloc/free Sat, Aug 5: Signing in with Google, from scratch
Sat, Jul 29: concurrent fwrites are not atomic Sun, Jul 30: Cut out the CA middleman
Sun, Jun 25: Pattern jokes via WordNet/NLTK
Tue, Jun 6: Long calendar
Sun, Jun 4: Defining the sine function as an oscillator
Fri, May 19: Granddad died today
Tue, May 2: Core Image kernel CLI program Wed, May 3: CIColorKernel Sat, May 6: Reimplementing clear Sun, May 7: Don’t trust cat!
Wed, Apr 26: Applying a CIFilter to an image in Swift Thu, Apr 27: Custom CIFilter in Swift Fri, Apr 28: What are samples in a Core Image kernel? Sat, Apr 29: Hello world webcam application in Swift on macOS Sun, Apr 30: CIKernel with multiple inputs
Mon, Apr 17: What company information is public? What’s on Companies House? Tue, Apr 18: A TCP chat server in 55 lines of Golang Wed, Apr 19: OpenCL hello world on macOS Thu, Apr 20: Running Swift from the CLI Fri, Apr 21: What is a .app? Sat, Apr 22: Simplest neural network: a neuron Sun, Apr 23: TensorFlow hello world
Mon, Apr 10: Playing with Stripe Tue, Apr 11: Vidrio payment server Wed, Apr 12: Vidrio payment server: creating charges Thu, Apr 13: Vidrio gets real product keys Fri, Apr 14: Elliptic curve crypto with OpenSSL Sat, Apr 15: Creating a public-key infrastructure from scratch Sun, Apr 16: What is a business? What is a company?
Mon, Apr 3: Running go tool trace Tue, Apr 4: Mobile web page device width Wed, Apr 5: How do I set a socket to be non-blocking? Thu, Apr 6: rxi/vec - a simple C vector library Fri, Apr 7: Multiplexing by looping over nonblocking sockets Sat, Apr 8: Implementing a ‘free trial’ for macOS apps Sun, Apr 9: Product key server as a service
Mon, Mar 27: How to use keycastr Tue, Mar 28: Varying navbar for mobile and desktop Wed, Mar 29: Mobile video prevent autoplay Thu, Mar 30: Replay with sound Fri, Mar 31: Vidrio promo video: first cut Sat, Apr 1: Monthly review: 2017-03 Sun, Apr 2: Sequencing markets
Mon, Mar 20: How is MainMenu.xib found? Tue, Mar 21: How do I do public-key encryption with openssl? Wed, Mar 22: How do I do public-key signatures with openssl? Thu, Mar 23: Getting your point across with spaced repetition Fri, Mar 24: Your password is the private key. So what is the public key? Sat, Mar 25: Study of framer.com promo video Sun, Mar 26: Vidrio promo music
Mon, Mar 13: How do I create a message digest using openssl? Tue, Mar 14: Don’t say ‘it will take five minutes’ Wed, Mar 15: Vidrio marketing strategy Thu, Mar 16: Vidrio 1.2 is released Fri, Mar 17: How to make a Cocoa application without a .xib file Sat, Mar 18: What is Swift’s @NSApplicationMain annotation? Sun, Mar 19: What is NSApplication? How is it instantiated? What is NSApp?
Mon, Mar 6: Vidrio needs the touch bar Tue, Mar 7: Vidrio is on Slack Wed, Mar 8: Vidrio is Tony Stark’s presentation tool Thu, Mar 9: How do I encrypt text with openssl? Fri, Mar 10: How do I generate random bytes with openssl? Sat, Mar 11: How do I fetch a server’s SSL certificate using openssl? Sun, Mar 12: How do I hash a password with openssl?
Mon, Feb 27: What are the domain and type arguments to the socket system call? Tue, Feb 28: Writing a TCP server with the pthread API Wed, Mar 1: How do I create the AppIcon for my app? , Vidrio website , Vidrio privacy policy , Vidrio gets a menu bar , Vidrio App Record , Justifying posts , Monthly review: 2017-02 , Installing and running ebe , Apple Store release process Thu, Mar 2: Vidrio turns the webcam off when not showing it , Vidrio should have a pause/unpause feature , Vidrio opacity slider , Vidrio is available! , Vidrio app description , Submitting an app build to iTunes Connect Fri, Mar 3: Adding a developer account to XCode Sat, Mar 4: Vidrio installs per day , Vidrio bug: pause toggle text wrong after unpausing by setting to default opacity , Vidrio: better screenshots on the App Store Sun, Mar 5: Vidrio for Windows , Vidrio 1.1 is released
Mon, Feb 20: macOS assembly hello world , What is lsof? Tue, Feb 21: What is a a FIFO, or “named pipe”? What is mkfifo in C? Wed, Feb 22: What is ssize_t in C? , Don’t use the word ‘simply’ Thu, Feb 23: How do I print bits in C? Fri, Feb 24: What is mode_t in C? Sat, Feb 25: Writing a TCP server using the fork syscall , Going paperless Sun, Feb 26: What is UTF-8?
Mon, Feb 13: French preposition examples Tue, Feb 14: UNIX as a SQL database Wed, Feb 15: How do I duplicate a file descriptor in C? Thu, Feb 16: How do I close a file descriptor in C? Fri, Feb 17: How do I call a program in C, setting up standard pipes? Sat, Feb 18: What are setjmp and longjmp in C? Sun, Feb 19: Generating Intel and AT&T assembly with clang
Mon, Feb 6: How do I use fork in C? Tue, Feb 7: How do I call a program from C? Wed, Feb 8: Waking up earlier , How does GeoDNS work? Thu, Feb 9: How to wake up earlier Fri, Feb 10: What is the happened-before relation? Sat, Feb 11: Are processes and messages different? Sun, Feb 12: What are Lamport timestamps?
Mon, Jan 30: How do I read man pages? , Cloning Spaceteam Tue, Jan 31: macOS system calls Wed, Feb 1: Monthly review: 2017-01 Thu, Feb 2: How do I access environment variables in C? Fri, Feb 3: How do I generate assembly from a C file? Sat, Feb 4: FOSDEM: The Challenges and Secrets of the Realtime World , WebRTC - low barrier to entry, low barrier to exit? , What are the stages of C compilation? Sun, Feb 5: How do I use execve in C?
Mon, Jan 23: What is the type of a constant in C? Tue, Jan 24: Quickly checking for a zero byte in C using bitwise operations , Binary subtraction Wed, Jan 25: What is Coulomb’s law? Thu, Jan 26: What is mmap in C? Fri, Jan 27: Reading a file with mmap in C Sat, Jan 28: Writing a file with mmap Sun, Jan 29: In what ways can processes communicate?
Mon, Jan 16: A hello world serverless WebRTC app Tue, Jan 17: How does reliability work in RTCDataChannel? Wed, Jan 18: What is electric charge? Thu, Jan 19: What is electric current? Fri, Jan 20: What is the UINT64_C macro in C? Sat, Jan 21: What are lvalue and rvalue in C? Sun, Jan 22: C constants vs. literals
Mon, Jan 9: What are ‘signals’ in C? Tue, Jan 10: What does the C signal function return? Wed, Jan 11: How do I unregister a signal handler in C? Thu, Jan 12: Doing something n times in C with while and decrement Fri, Jan 13: What is sigaction in C? Sat, Jan 14: How do C signals interact with the stack? Sun, Jan 15: What is STUN?
Mon, Jan 2: How do I pack bits in C? (An answer using masks) Tue, Jan 3: What is a union in C? Wed, Jan 4: What are ‘bitfields’ in C? Thu, Jan 5: Error URLs (addressable errors) Fri, Jan 6: What is the Ivy Lee method? Sat, Jan 7: How does the USB power wire work? Sun, Jan 8: How does differential signaling work in USB?
Sun, Jan 1: How fast does an IP packet travel?
Mon, Dec 26: How do I measure program execution time in C? (Answer: the times function) Tue, Dec 27: How do I put an array in a struct in C? Wed, Dec 28: Pointer to middle of allocation, part 1 Fri, Dec 30: What are ‘statement expressions’ in GCC? Sat, Dec 31: What do DNS datagrams look like?
Mon, Dec 19: What syscalls does a UDP server need? Tue, Dec 20: Writing a ‘hello world’ HTTP server in C Wed, Dec 21: What is htons in C? Thu, Dec 22: How do I print bytes in C? Fri, Dec 23: What are ‘protocol numbers’ in IP? Sat, Dec 24: What is perror in C? Sun, Dec 25: Array literals in C with explicit indexes
Mon, Dec 12: What are static functions in C? Tue, Dec 13: What is errno in C? Wed, Dec 14: What syscalls does a TCP server need? Thu, Dec 15: “File descriptor” is a misnomer Fri, Dec 16: Writing a TCP server with the select syscall Sat, Dec 17: What is fdset in C? Sun, Dec 18: Writing a TCP server with the kqueue API
Mon, Dec 5: How do I set the C compiler in a Makefile? Tue, Dec 6: What is a ‘binary-safe’ string? Wed, Dec 7: What are automatic variables (dollar variables) in a Makefile? Thu, Dec 8: What is ‘array decaying’ in C? Fri, Dec 9: What are ‘macro functions’ in C? Sat, Dec 10: How to do wraparound (modulo) with a bitmask in C
Mon, Nov 28: What is static in C? Tue, Nov 29: How do I find out which preprocessor my C compiler uses? , What is size_t for? How do I iterate over an object in C? , What type should I use to count objects in C? Wed, Nov 30: Where is the C programming language defined? , Does C allow pointer arithmetic? , How do I write a multi-line string literal in C? , Can I put comments in string literals in C? , What do array subscripts mean in C? (Answer: add then dereference) Thu, Dec 1: Does C have booleans? , What is realloc in C? Fri, Dec 2: What does const mean in C? Sat, Dec 3: What does the restrict keyword mean in C? Sun, Dec 4: What is FILE in C?
Mon, Nov 21: How does a stream cipher work? Tue, Nov 22: Some screenshots of Vidrio Wed, Nov 23: How do varargs work in C? Thu, Nov 24: A C typedef convention for complex types , How is the stack laid out in C? Fri, Nov 25: Don’t use the word ‘it’ Sun, Nov 27: What is void in C? , What does void mean as a function parameter in C? , What is K&R style function definition in C? , What are ‘calling conventions’ in C? , Bike front derailleur
Tue, Nov 15: 128 byte of CSS is enough Wed, Nov 16: Learning vim (a short adventure) , How do I serialize JSON in Swift? , Post every day , A summary of ‘On-the-Fly Garbage Collection: An Exercise in Cooperation’ , Cleaner Thu, Nov 17: What is an .xcworkspace file? , What is an .xcodeproj file? , How do I write a UDP server in Go? , How do I replace target/action with callbacks in Swift? , Summary of ‘Zero to One’, Chapter 1: the challenge of the future Fri, Nov 18: How do I change the resolution on macOS? Sat, Nov 19: Some notes on symmetric cryptography Sun, Nov 20: A comparison of Huel, Joylent, et cetera
Fri, Nov 11: How does tricolor garbage collection work?