Skip to content

Instantly share code, notes, and snippets.

View caniszczyk's full-sized avatar
💭
always paying it forward

Chris Aniszczyk caniszczyk

💭
always paying it forward
View GitHub Profile
### Keybase proof
I hereby claim:
* I am caniszczyk on github.
* I am zx (https://keybase.io/zx) on keybase.
* I have a public key whose fingerprint is 24B2 D8E1 F36E 2EFC 7ACC FE3B E7FB 2DB9 DF71 84CD
To claim this, I am signing this object:
@caniszczyk
caniszczyk / restaurants.md
Last active August 29, 2015 14:02
Restaurants in Austin @cra likes
@caniszczyk
caniszczyk / datagrants.rb
Created March 21, 2014 17:23
Random Sampling of CSV in Ruby
require 'csv'
csvs = (1..13).map{|i| CSV.open("data#{i}.csv", "w")}
CSV.foreach("datagrants.csv") do |row|
puts row # TODO remove
csvs.sample << row
end
@caniszczyk
caniszczyk / gist:9192214
Created February 24, 2014 16:58
Austin Newish Apartments
There's a metro rail in Austin which is awesome but it doesn't go to many areas yet, they plan on extending the service soon: http://www.capmetro.org/metrorail/
To get an idea of apt pricing, here are some that are being built or are built in decent locations that are a bit "fancier"
http://gables.com/parkplaza (used to live there, super fancy though and next to Whole Foods HQ)
http://www.coleapts.com/ (great location near Zilker, walkable to SoLa, Zilker Park and downtown)
http://gibsonflats.com/ (south lamar, close to zilker and new alamo draft house, newly built)
http://www.postproperties.com/community.aspx?community=247600 (fairly newly built)
http://www.amli.com/apartments/austin/downtown/austin/300 (older but cheap for its location)
http://www.elevenaustin.com/ (newly built on the east side)
@caniszczyk
caniszczyk / gist:8921257
Last active August 29, 2015 13:56
Composing Services via Finagle
val timelineSvc = Thrift.newIface[TimelineService](...) // #1
val tweetSvc = Thrift.newIface[TweetService](...)
val authSvc = Thrift.newIface[AuthService](...)
val authFilter = Filter.mk[Req, AuthReq, Res, Res] { (req, svc) => // #2
authSvc.authenticate(req) flatMap svc(_)
}
val apiService = Service.mk[AuthReq, Res] { req =>
timelineSvc(req.userId) flatMap {tl =>
@caniszczyk
caniszczyk / gist:8921074
Created February 10, 2014 18:06
Bridge Netty and Finagle
class ServerBridge[In, Out](
serveTransport: Transport[In, Out] => Unit,
) extends SimpleChannelHandler {
override def channelOpen(
ctx: ChannelHandlerContext,
e: ChannelStateEvent
){
val channel = e.getChannel
val transport = new ChannelTransport[In, Out](channel) // #1
serveTransport(transport)
@caniszczyk
caniszczyk / gist:8921026
Created February 10, 2014 18:04
Netty based Listener
case class Netty3Listener[In, Out](
pipelineFactory: ChannelPipelineFactory,
channelFactory: ServerChannelFactory
bootstrapOptions: Map[String, Object], ... // stats/timeouts/ssl config
) extends Listener[In, Out] {
def newServerPipelineFactory(
statsReceiver: StatsReceiver, newBridge: () => ChannelHandler
) = new ChannelPipelineFactory { // #1
def getPipeline() = {
val pipeline = pipelineFactory.getPipeline()
@caniszczyk
caniszczyk / gist:8920924
Created February 10, 2014 17:58
Netty3 based Transport in Finagle
case class Netty3Transporter[In, Out](
pipelineFactory: ChannelPipelineFactory,
newChannel: ChannelPipeline => Channel =
Netty3Transporter.channelFactory.newChannel(_),
newTransport: Channel => Transport[In, Out] =
new ChannelTransport[In, Out](_),
// various timeout/ssl options
) extends (
(SocketAddress, StatsReceiver) => Future[Transport[In, Out]]
){
@caniszczyk
caniszczyk / gist:8920827
Created February 10, 2014 17:52
Bridging Netty and Finagle
object Netty3Transporter {
val channelFactory: ChannelFactory =
new NioClientSocketChannelFactory(
Executor, 1 /*# boss threads*/, WorkerPool, DefaultTimer
){
// no-op; unreleasable
override def releaseExternalResources() = ()
} #1
val defaultChannelOptions: Map[String, Object] = Map(
"tcpNoDelay" -> java.lang.Boolean.TRUE,
@caniszczyk
caniszczyk / gist:8920758
Last active August 29, 2015 13:56
Connect to remote host Finagle / Netty
private[netty3] class ChannelConnector[In, Out](
newChannel: () => Channel,
newTransport: Channel => Transport[In, Out]
) extends (SocketAddress => Future[Transport[In, Out]]) {
def apply(addr: SocketAddress): Future[Transport[In, Out]] = {
require(addr != null)
val ch = try newChannel() catch {
case NonFatal(exc) => return Future.exception(exc) #1
}
// Transport is now bound to the channel; this is done prior to