This document summarizes the evolution of software and services used by PicCollage over time, including upgrades to:
- Ruby from 1.8.7 to 1.9.3
- Rails from 3.1.0 through 3.2.10
- Web servers from Sinatra to Jellyfish and Thin to Zbatery
- Background job processing from Resque to Sidekiq
- Hosting services like GitHub, Heroku, MongoDB, and others
1. Why we moving API from REST to Graphql?
2. What is Graphql?
3. Graphql in Golang (Why we choose Golang)
4. How to testing Graphql in Golang
5. Deploy Graphql application
1. Why we moving API from REST to Graphql?
2. What is Graphql?
3. Graphql in Golang (Why we choose Golang)
4. How to testing Graphql in Golang
5. Deploy Graphql application
This talk I will show you the golang project layout and some best practice like as the following:
1. RESTful api and GraphQL
2. Model testing (Postgres, SQLite, MySQL)
3. Software Quality
4. Data Metrics
5. Go Testing
Writing NodeJS applications is an easy task for JavaScript developers. However, getting what is happening under the hood in NodeJS may be intimidating, but understanding it is vital for web developers.
Indeed, when you try to learn NodeJS, most tutorials are about the NodeJS ecosystem like Express, Socket.IO, PassportJS. It is really rare to see some tutorials about the NodeJS runtime itself.
By this meetup, I want to spot the light on some advanced NodeJS topics so as to help developers answering questions an experienced NodeJS developer is expected to answer. Understanding these topics is essential to make you a much more desirable developer. I want to explore several topics including the famous event-loop along with NodeJS Module Patterns and how dependencies actually work in NodeJS.
I hope that this meetup would help you to be more comfortable understanding advanced code written in NodeJS.
This talk I will show you the golang project layout and some best practice like as the following:
1. RESTful api and GraphQL
2. Model testing (Postgres, SQLite, MySQL)
3. Software Quality
4. Data Metrics
5. Go Testing
Writing NodeJS applications is an easy task for JavaScript developers. However, getting what is happening under the hood in NodeJS may be intimidating, but understanding it is vital for web developers.
Indeed, when you try to learn NodeJS, most tutorials are about the NodeJS ecosystem like Express, Socket.IO, PassportJS. It is really rare to see some tutorials about the NodeJS runtime itself.
By this meetup, I want to spot the light on some advanced NodeJS topics so as to help developers answering questions an experienced NodeJS developer is expected to answer. Understanding these topics is essential to make you a much more desirable developer. I want to explore several topics including the famous event-loop along with NodeJS Module Patterns and how dependencies actually work in NodeJS.
I hope that this meetup would help you to be more comfortable understanding advanced code written in NodeJS.
Chef is an open source configuration management and service integration automation tool that has been integral to a number of large successful OpenStack deployments. This talk will provide a brief introduction to Chef and why it frequently the configuration tool of choice for large deployments and discuss the use of Chef within the OpenStack ecosystem (development, testing, deploying and managing the installation). Chef also provides the ability to manage the instances running on top of Nova through the knife-openstack plugin.
Chef for OpenStack - OpenStack Fall 2012 SummitMatt Ray
Chef for OpenStack is a collaborative project for the deployment and management of OpenStack clouds. This is an overview of the status of the project at the OpenStack Fall 2012 Summit
Achieving Infrastructure Portability with ChefMatt Ray
Deploying to the cloud has made it easy to run large numbers of servers, but users may become dissatisfied with their particular cloud platform for reasons such as price, support and performance. There are a number of vendor lock-ins to avoid, this talk discusses how to do so with the open source configuration management and infrastructure automation platform Chef. Chef makes it easy to deploy to nearly every public and private cloud platform as well as virtualized and physical servers. Chef may also be used to deploy cloud infrastructures such as OpenStack, Eucalyptus or CloudStack. By abstracting away the platform, infrastructure becomes portable and you are free to deploy wherever necessary.
The Operator Pattern - Managing Stateful Services in KubernetesQAware GmbH
Cloud Native Night, January 2018, Mainz: Talk by Jakob Karalus (@krallistic, IT Consultant at codecentric)
Join our Meetup: https://www.meetup.com/de-DE/Cloud-Native-Night
Abstract: While it's easy to deploy stateless application with Kubernetes, it's harder for stateful software. Since applications often require custom functionality that Kubernetes can't provide, developers want to add more specialized patterns like automatic backups, failover or rebalancing to their Kubernetes deployments. In this talk, we will look at the Operator Pattern and other possibilities to extend the functionality of Kubernetes and how to use them to operate stateful applications.
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
While working with Hadoop, you'll eventually encounter the need to schedule and run workflows to perform various operations like ingesting data or performing ETL. There are a number of tools available to assist you with this type of requirement and one such tool that we at Clairvoyant have been looking to use is Apache Airflow. Apache Airflow is an Apache Incubator project that allows you to programmatically create workflows through a python script. This provides a flexible and effective way to design your workflows with little code and setup. In this talk, we will discuss Apache Airflow and how we at Clairvoyant have utilized it for ETL pipelines on Hadoop.
Similar to The Architecture of PicCollage Server (20)
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
11. PicCollage
•Make collages of your photos
•Import photos from places
•Touch gestures to rotate, resize, delete
•Double-tap to edit, clip, etc
•Clip photos by outlining the area
•Lots of backgrounds and stickers
32. # make `rails server` work for zbatery
gem 'rack-handlers'
# respect rack logger
gem 'rack-rails-logger'
# redirect from www to root domain
gem 'rack-rewrite'
# cache for API
gem 'rack-cache'
Gemfile (Cont.)
34. group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'uglifier'
end
group :cedar do
gem 'rib'
gem 'bond'
gem 'readline_buffer',
:platform => :ruby
end
Gemfile (Cont.)
35. group :test do
gem 'minitest'
gem 'rr'
gem 'webmock'
gem 'kramdown'
end
group :test do
gem 'capybara'
gem 'rspec'
gem 'rspec-rails'
end
Gemfile (Cont.)
42. Rakefile
task 'test:api' => ['env:test',
'environment'] do
require './config/environments/test'
# force rails loaded, otherwise it's
# causing too much loading troubles,
# by rails' autoloading mechanism
Dir['./test/api/*.rb'].each do |test|
require test
end
# ...
end
(Cont.)
43. # this is only available in 1.9.3+
if Test::Unit.const_defined?(:RunCount)
Test::Unit::RunCount.run_once{
status = Test::Unit::Runner.new.run
exit(status) if status != 0
}
end
Rakefile (Cont.)
45. worker_processes 2 # assume 2 CPU cores
preload_app true
l = ::Logger.new($stderr)
l.level = case ENV['RACK_ENV']
when 'production'
::Logger::WARN
else
::Logger::DEBUG
end
logger l
rainbows.rb
46. rainbows.rb
Rainbows! do
use :EventMachine, :em_client_class =>
lambda{
require 'concurrency'
client = Concurrency.
eventmachine_client
l.info("Using #{client}")
client
}
worker_connections 64
end
(Cont.
47. before_fork do |_, _|
# don't hold connections on master
unless defined?(Zbatery)
l.info("Discon' PSQL and Redis...")
AR::Base.connection.disconnect!
Redis.current.quit
end
end
rainbows.rb (Cont.
48. after_fork do |_, _|
# hold connections on workers
unless defined?(Zbatery)
l.info("Conn' PSQL and Redis...")
Redis.current.connect
AR::Base.connection.
establish_connection
end
end
rainbows.rb (Cont.
49. EM.error_handler do |e|
puts "Err: #{e.inspect}"
" #{e.backtrace.inspect}"
begin
::Exceptional::Catcher.handle(e)
::NewRelic::Agent.instance.
error_collector.notice_error(e)
rescue Exception => e
puts "Err: Exceptional/NewRelic:"
" #{e.inspect}"
" #{e.backtrace.inspect}"
end
rainbows.rb (Cont.
54. concurrency.rb
module Concurrency
Model = Thread
module_function
def eventmachine_client
if Model == Thread
RainbowsEMThreadPoolClient
elsif Model == Fiber
RainbowsEMFiberSpawnClient
else
Rainbows::EventMachine::Client
end
end
61. use Rack::CommonLogger, debug_logger
use Rack::Deflater
use Rack::Static,
:urls => ['/images'], :root =>
"#{File.dirname(__FILE__)}/public"
use AR::ConnectionAdapters::
ConnectionManagement
server.rb (Cont.)
67. error.rb (Cont.)
class Api::MiddleError
handle Jellyfish::NotFound do
render(error_custom(
Api::NotFound.new(
"Path not found.")))
end
handle Exception do |error|
render(error_500(error))
end
82. shell.rb
require 'waiter'
require 'concurrency'
module Shell
module_function
# this is for cocaine
def call command, env={}
Shell.system(*command)
end
# e.g. Shell.system('identify', 'img')
def system *args
system_multi(args).first
end
83. shell.rb
# e.g. Shell.system_multi(%w[identify
# image.png], %w[identify me.png])
def system_multi *cmds
if EM.reactor_running?
# ...
else
cmds.map{ |cmd|
system_blocking(cmd) }
end
end
(Cont.)
84. shell.rb
def system_multi *cmds
# ...
w = Waiter.new
r = {}
cmds.each.with_index do |cmd, idx|
system_async(*cmd) do |output|
r[idx] = output
w.resume(r.sort.map(&:last)) if
r.size == cmds.size
end
end
w.yield
(Cont.)
85. shell.rb
def system_async *args
tuple = system_spawn(args)
Thread.new do
begin
result = system_wait(*tuple)
rescue Exception => e
EM.instance_variable_get(
:@error_handler).call(e)
ensure
# ...
ennnd
(Cont.)
108. /search
case params['engine']
when 'pinterest'; sch_pinterest
when 'pinterest_api'; sch_pinterest_api
when 'bing' ; sch_bing offset, limit
when 'azure' ; sch_azure offset, limit
when 'google'; sch_google offset, limit
when 'flickr'; sch_flickr offset, limit
else ; sch_google offset, limit
# default google
end
(Cont.)
110. /search
def search_from_google offset, limit
google = RC::GoogleImage.new(
referer: request.url,
userip: request.ip)
search_image_and_flatten(
google, offset, limit) do |q, n, i|
google.search_image(
q, rsz: n, start: i)
end
end
(Cont.)
116. /create_and_share
c_para = params.merge('plist' => plist)
c_para.delete('image')
if rc_tumblr &&
for_auths_and_clients.empty?
# no user for tumblr
else # check user for any other cases
c_para['user'] =
current_user_with_check
end
(Co
119. (Co/create_and_share
def process_thumbnails img, &blk
if blk
RunLater.with do
process_thumbnails_inplace img
if blk.arity == 1; blk.call(self)
else ; blk.call; end
end
else
process_thumbnails_inplace img
end
end