Profile

Cover photo
Rob Fielding
Works at Check Point
Attended George Mason University
Lives in springfield, va
198 followers|138,242 views
AboutPostsPhotosYouTube

Stream

Rob Fielding

Shared publicly  - 
 
scale shape in relative steps: 3/4, 3/4, 1/2
1
Add a comment...

Rob Fielding

Shared publicly  - 
 
Comprehensive microtonal (quartertone, ie: split fret) guitar tutorial.
1
Add a comment...

Rob Fielding

Shared publicly  - 
 
How to use a quartertone instrument in a practical way.  By combining short chains of whole, half and threeQuarter tones in sensible ways, you can get far more scale possibilities than usual.
1
Add a comment...

Rob Fielding

commented on a video on YouTube.
Shared publicly  - 
 
This principle must be applied to interfaces between software modules as well.  Objects have a constructor that runs first, a destructor that runs last, and a giant pile of functions with unknown ordering.  DesignByContract (related to dependent types) and explicit states might be a way of specifying it; but it seems that an API spec is probably the same language required to specify a packet or disk protocol.  As an example: If done right, an API invoked in any random order that each functions preconditions allow should not crash (something I have done to test C code to host an embedded language VM).
1
Add a comment...

Rob Fielding

commented on a video on YouTube.
Shared publicly  - 
 
Thank you! Thanks for viewing! Check out my zippy chain video too
1
Add a comment...

Rob Fielding

commented on a post on Blogger.
Shared publicly  - 
 
I like Go, but I don't see any actual arguments that there is anything wrong with this assessment.  It isn't a fatal flaw of the language, but the type system is a little awkward.  

Abusing interfaces to approximate subtypes is awkward.  If everything is going to be oriented around channels, then passing around subtyped structs (or safe unions) is important.  Is the unsafe requirement for protobufs related to this?  

A good collections library should have the choices required to get asymptotically optimal algorithms built with almost no fuss, with the choices between ordered/unordered and set/list/map and queue/stack/heap being easy to find.  Java undeniably does this really well; even if Go still does this ok.  

Sometimes when using Go channels, I think I might be better off just going back to Erlang due to its pattern matching.  The most troublesome part of verifying the correctness of Erlang code is following the implicit protocol in the weakly typed structs being passed around.  There is stronger typing in Go, but without normal subtype declarations, it becomes convoluted to do declare a whole bunch of structs with some referential integrity (ie: a FooReply struct that contains a ref to a FooRequest, let alone an IPPacket struct that contains a TCPPacket|UDPPacket, ... either a safe union or just normal subtyped references, etc.)
After a considerable gap, a gave Go another go! The Problem As part of a consulting engagement, I accepted a project to develop some statistical inference models in the area of drug (medicine) repositioning. Input data compri...
1
Srinivas JONNALAGADDA's profile photo
 
Thanks, Rob, for your comment.  Some of the subtype requirements can be handled well in Go using interfaces.  In my program too, I had some useful interfaces.
Add a comment...
Have him in circles
198 people
Rodrigo Ferreira's profile photo
Richard Lainhart's profile photo
Jason Doyle's profile photo
Vasanta Thurling's profile photo
Tucker Taft's profile photo
catherine lyn's profile photo
Dan Powell's profile photo
Eyal Amir's profile photo
Derrick Campbell's profile photo

Rob Fielding

Shared publicly  - 
 
 
Google has enough JavaScript source code in its repository that it actually makes sense to perform refactoring operations with a distributed map/reduce.  *We map/reduce our source code.* On the one hand, that's kind of insane.  On the other, trying to do it manually would be even more insane.
View original post
1
Add a comment...

Rob Fielding

Shared publicly  - 
1
Add a comment...

Rob Fielding

Shared publicly  - 
 
My left handed quartertone guitar (24 frets to the octave) is about half finished.  I should have it in a few weeks.
1
Add a comment...

Rob Fielding

Shared publicly  - 
 
Djent with an actual vocalist (TesseracT).  My new favorite band.  I discovered them a few nights after they were playing down the street from me.
HS ÿ´Wmsâ6 þίP™ÎÙL° \“ÞÄ!w Ð+ ”Ë ônn˜”1ö jŒÌH J þ{W–ˆ—kò¥|H$ïî³»ÏêeuùCûSkðí®Cfrž\]ª¿$ Ù´Y V&q(C/ …ô õ€…ã âfYò%”Q ÂøêRDœ.äÕ*äd##AI“ û7t$ S6uî‡ ±H™€~¦vO. [& r]AÂ鄸q -çÀ¤¯=}¡‚ŽiBå -$dÄ.8p`qÆmN "ŵ UR¯ *ŒãÎ ·TH`ÀÝ< • f¸ª Íl6 ä¥ ™„‰ I¾)” r¤ê¯Yò£ Oç@Þ¼!z䣊[ñ á †f,ç¸ó· ÎÂD©ZS‰! ] ...
1
Add a comment...

Rob Fielding

Shared publicly  - 
1
Erik Fichtner's profile photo
 
Pretty song. Hilarious interruption. 
Add a comment...

Rob Fielding

Discussion  - 
 
I am looking for some advice on how tagged structs are handled in idiomatic Go.  I am reading an RFC, implementing structs that correspond to messages, and they are full of tagged unions if you attempt to mimic the actual byte layout (ignoring host/network byte ordering and alignment).  For example:

type IPPacket struct {
  ...
  src IpAddr
  dst IpAddr
  ...
  payloadType int
  payload IPPayload
}

type IPPayload struct {
  tcp TCPPayload
  udp UDPPayload
  ..
}

How is this normally dealt with in idiomatic Go?  Just use pointers?  Wrapping structs in functions?  The above works fine and is how the code should actually look .  Marshalling can throw away the space waste, but the in-memory representation is ridiculously wasteful.  I know that a literal union (just re-interpreting bytes with C) is not typesafe, but all that the behavior actually requires is that when the type flag is set to indicate a tcp payload that values can be set and read, whereas if it is set to something else I should get all zeroes. 

Actually, an ideal way of handling this might be to have a way to actually associate the tags at compile time with how the field is interpreted - almost like a 1 entry hashtable keyed by int.  ie:

//making up syntax for unions that know their tags at compile time
type NetworkPacket struct {
  tagVal int
  union by tagVal {
    43 => fooProtocol FooPacket
    44 => barProtocol BarPacket
  }
}

And the idea would be that networkPacket.fooProtocol is defined when networkPacket.tagVal==43, but zero otherwise.  There isn't any reason for this struct to be discontiguous in memory, as it requires sizeof(int)+max(sizeof(FooPacket),sizeof(BarPacket))

I imagine that because of what Go was designed for, handling strongly typed messages that were specified by tagged union based data structures must come up a lot.  I had read that protobufs used unsafe code internally (I could be wrong), and wonder if this is why.
1
Lars Tørnes Hansen's profile photoJeff Wendling's profile photoRob Fielding's profile photoGraeme Connell's profile photo
9 comments
 
Definitely happy to accept any outside implementations of protocols.  Hit me up at gopacket@googlegroups.com with any questions or concerns.
Add a comment...
People
Have him in circles
198 people
Rodrigo Ferreira's profile photo
Richard Lainhart's profile photo
Jason Doyle's profile photo
Vasanta Thurling's profile photo
Tucker Taft's profile photo
catherine lyn's profile photo
Dan Powell's profile photo
Eyal Amir's profile photo
Derrick Campbell's profile photo
Work
Occupation
programmer
Employment
  • Check Point
    Programmer, present
  • NFR Security
    Programmer
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
springfield, va
Links
Contributor to
Story
Tagline
Developer of: Mugician, Geo Synth, AlephOne, and Xstrument (aka Xtrument) music instrument apps.
Introduction
I used to play (left handed) guitar in a metal band when I was a teenager.  I'm a computer programmer doing user interfaces for security companies.  I create instruments, primarily for iPad/iPhone as my hobby now, looking to fundamentally alter the playability of this format and propel Mugician-like microtonal-capable instruments to replace guitars for a lot of purposes.  Google: Mugician, Geo Synth, Pythagoras, Xstrument, rrr00bb for more info.
Education
  • George Mason University
Basic Information
Gender
Male