Comparing the reputation systems of Slashdot (slashdot.org) and Hacker News (news.ycombinator.com), highligting details and presenting possible changes.
Christoph Matthies (@chrima0), Robert Lehmann (@rlehmann)
Presentation made at GTA meetup in 2012-02-07.
Object Calisthenics is a set of exercise rules to reach better code, maintainable, testable and readable.
Presentation made at GTA meetup in 2012-02-07.
Object Calisthenics is a set of exercise rules to reach better code, maintainable, testable and readable.
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...Matt Harrison
Python makes data science easy. In this deck we walk through a complete example of creating and evaluating a predictive model using Decision Trees and Random Forests. All of the code is included in the slides.
Most developers will be familiar with lex, flex, yacc, bison, ANTLR, and other tools to generate parsers for use inside their own code. Erlang, the concurrent functional programming language, has its own pair, leex and yecc, for accomplishing most complicated text-processing tasks. This talk is about how the seemingly simple prospect of parsing text turned into a new parser toolkit for Erlang, and why functional programming makes parsing fun and awesome.
apidays LIVE New York - WT* is JWT? by Maciej Trederapidays
apidays LIVE New York - API for Legacy Industries: Banking, Insurance, Healthcare and Retail
WT* is JWT?
Maciej Treder, Senior Software Development Engineer at Akamai Technologies
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...Matt Harrison
I gave this presentation at Code Camp. As a data scientist and backcountry skier, I was interested in looking at fatal avalanche data. This covers scraping the data, analysis with Python, pandas and IPython Notebook. The final result is an infographic
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Højniveausprog til indlejrede systemer den 12. marts 2014. Læs mere om interessegruppen her: http://infinit.dk/dk/interessegrupper/hoejniveau_sprog_til_indlejrede_systemer/hoejniveau_sprog_til_indlejrede_systemer.htm
We will dig into principles that allow writing code that breaks less:
composition and enforcing it;
private by default;
named constructors;
state and immutability;
method chaining;
dependencies and injection;
method flow and cyclomatic complexity;
exceptions: when to catch, how to catch. What should we do with exceptions and what we should not;
value object;
DTO;
typing;
services, their dependencies, and state;
how to write code so it works with RoadRunner / Swoole;
how to test all that?
CQS;
layers and abstraction.
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...Matt Harrison
Python makes data science easy. In this deck we walk through a complete example of creating and evaluating a predictive model using Decision Trees and Random Forests. All of the code is included in the slides.
Most developers will be familiar with lex, flex, yacc, bison, ANTLR, and other tools to generate parsers for use inside their own code. Erlang, the concurrent functional programming language, has its own pair, leex and yecc, for accomplishing most complicated text-processing tasks. This talk is about how the seemingly simple prospect of parsing text turned into a new parser toolkit for Erlang, and why functional programming makes parsing fun and awesome.
apidays LIVE New York - WT* is JWT? by Maciej Trederapidays
apidays LIVE New York - API for Legacy Industries: Banking, Insurance, Healthcare and Retail
WT* is JWT?
Maciej Treder, Senior Software Development Engineer at Akamai Technologies
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...Matt Harrison
I gave this presentation at Code Camp. As a data scientist and backcountry skier, I was interested in looking at fatal avalanche data. This covers scraping the data, analysis with Python, pandas and IPython Notebook. The final result is an infographic
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Højniveausprog til indlejrede systemer den 12. marts 2014. Læs mere om interessegruppen her: http://infinit.dk/dk/interessegrupper/hoejniveau_sprog_til_indlejrede_systemer/hoejniveau_sprog_til_indlejrede_systemer.htm
We will dig into principles that allow writing code that breaks less:
composition and enforcing it;
private by default;
named constructors;
state and immutability;
method chaining;
dependencies and injection;
method flow and cyclomatic complexity;
exceptions: when to catch, how to catch. What should we do with exceptions and what we should not;
value object;
DTO;
typing;
services, their dependencies, and state;
how to write code so it works with RoadRunner / Swoole;
how to test all that?
CQS;
layers and abstraction.
PHP has its own treasure chest of classic mistakes that surprises even the most seasoned expert : code that dies just by changing its namespace, strpos() that fails to find strings or arrays that changes without touching them. Do that get on your nerves too ? Let’s make a list of them, so we can always teach them to the new guys, spot them during code reviews and kick them out of our code once and for all. Come on, you’re not frightening us !
Dip Your Toes in the Sea of Security (PHP UK 2016)James Titcumb
Security is an enormous topic, and it’s really, really complicated. If you’re not careful, you’ll find yourself vulnerable to any number of attacks which you definitely don’t want to be on the receiving end of. This talk will give you just a taster of the vast array of things there is to know about security in modern web applications, such as writing secure PHP web applications and securing a Linux server. Whether you are writing anything beyond a basic brochure website, or even developing a complicated business web application, this talk will give you insights to some of the things you need to be aware of.
Investigating Software Engineering Artifacts in DevOps Through the Lens of Bo...Christoph Matthies
Slides for the talk on "Investigating Software Engineering Artifacts in DevOps Through the Lens of Boundary Objects" at the International Conference on Evaluation and Assessment in Software Engineering (EASE) conference 2023.
https://conf.researchr.org/details/ease-2023/ease-2023-research/2/Investigating-Software-Engineering-Artifacts-in-DevOps-Through-the-Lens-of-Boundary-O
Christoph Matthies, Robert Heinrich, and Rebekka Wohlrab. 2023. "Investigating Software Engineering Artifacts in DevOps Through the Lens of Boundary Objects". In Proceedings of the 27th International Conference on Evaluation and Assessment in Software Engineering (EASE '23). Association for Computing Machinery, New York, NY, USA, 12–21. https://doi.org/10.1145/3593434.3593441
Slides of the talk on "Automated Exercises & Software Development Data" at the 1st Workshop on Modern Software Engineering Education (WMSEE'23), held 31st May - 1st June 2023 at Imperial College London
https://wmsee.github.io
Challenges (and Opportunities!) of a Remote Agile Software Engineering Projec...Christoph Matthies
Presentation slides for the HICSS'22 paper "Challenges (and Opportunities!) of a Remote Agile Software Engineering Project Course During COVID-19"
Matthies, C., Teusner, R., & Perscheid, M. (2022). "Challenges (and Opportunities!) of a Remote Agile Software Engineering Project Course During COVID-19". In Proceedings of the Annual Hawaii International Conference on System Sciences. Hawaii International Conference on System Sciences. Hawaii International Conference on System Sciences. https://doi.org/10.24251/hicss.2022.113
Experience vs Data: A Case for More Data-informed Retrospective ActivitiesChristoph Matthies
Presentation slides for the LASD'21 paper "Experience vs Data: A Case for More Data-Informed Retrospective Activities"
Matthies, C., Dobrigkeit, F. (2021). Experience vs Data: A Case for More Data-Informed Retrospective Activities. In: Przybyłek, A., Miler, J., Poth, A., Riel, A. (eds) Lean and Agile Software Development. LASD 2021. Lecture Notes in Business Information Processing, vol 408. Springer, Cham. https://doi.org/10.1007/978-3-030-67084-9_8
More than Code: Contributions in Scrum Software Engineering TeamsChristoph Matthies
Presentation slides for the CHASE 2020 paper “More than Code: Contributions in Scrum Software Engineering Teams,” F. Ramin, C. Matthies, and R. Teusner, in IEEE/ACM 42nd International Conference on Software Engineering Workshops, ACM Press, 2020. doi: https://doi.org/10.1145/3387940.3392241
http://www.chaseresearch.org/workshops/chase2020
Agile Software Development Practices: Perceptions & Project DataChristoph Matthies
Talk on agile software development practices and their relationship to team members perceptions, held at the 2020 Software Engineering (SE) conference, organized by the Gesellschaft für Informatik (GI), 24-28 Feb 2020 in Innsbruck, Austria. Conference website: https://se20.ocg.at/
Paper :
C. Matthies, J. Huegle, T. Dürschmid, and R. Teusner, “Attitudes, Beliefs, and Development Data Concerning Agile Software Development Practices,” in Software Engineering 2020, M. Felderer, W. Hasselbring, R. Rabiser, and R. Jung, Eds., Bonn: Gesellschaft für Informatik e.V., 2020, pp. 73–74. doi: 10.18420/SE2020_20 (CC BY-SA 4.0)
[Online] available: https://dl.gi.de/handle/20.500.12116/31697
Counteracting Agile Retrospective Problems with Retrospective ActivitiesChristoph Matthies
Slides of the talk "Counteracting Agile Retrospective Problems with Retrospective Activities" held at the 26th EuroSPI Conference (2019) in Edinburgh.
http://2019.eurospi.net/index.php/workshop?id=78
Paper:
C. Matthies, F. Dobrigkeit, and A. Ernst, “Counteracting Agile Retrospective Problems with Retrospective Activities,” in Systems, Software and Services Process Improvement, A. Walker, R. V. O’Connor, and R. Messnarz, Eds., Cham:Springer International Publishing, 2019, pp. 532–545.
https://doi.org/10.1007/978-3-030-28005-5_41
Using Data to Inform Decisions in Agile Software Development Christoph Matthies
Presentation of the paper "Towards using Data to Inform Decisions in Agile Software Development: Views of Available Data" held on July 28th 2019 at the 14th International Conference on Software Technologies (ICSOFT'19) in Prague.
Paper authors: Christoph Matthies, Guenter Hesse. Hasso Plattner Institute, University of Potsdam, Germany
An Additional Set of (Automated) Eyes: Chatbots for Agile RetrospectivesChristoph Matthies
Slides for the talk on "An Additional Set of (Automated) Eyes: Chatbots for Agile Retrospectives", held at the 1st International Workshop on Bots in Software Engineering on May 28th, 2019 in Montreal, Canada, in conjunction with ICSE 2019.
Paper authors: Christoph Matthies, Franziska Dobrigkeit, Guenter Hesse
Website: https://botse.github.io/
Preprint: https://arxiv.org/abs/1903.02443
Beyond Surveys: Analyzing Software Development Artifacts to Assess Teaching E...Christoph Matthies
Slides of the talk on the paper "Beyond Surveys: Analyzing Software Development Artifacts to Assess Teaching Efforts" by Christoph Matthies, Ralf Teusner and Guenter Hesse given at the Frontiers in Education 2018 conference in San Jose, CA, USA in October 2018.
Preprints of the paper are available on arXiv (https://arxiv.org/abs/1807.02400)
Scrum2Kanban: Integrating Kanban and Scrum in a University Software Engineeri...Christoph Matthies
Slides for the talk at the Second International Workshop on Software Engineering Education for Millennials (SEEM'18, http://seem2018.se-edu.org/), colocated with the 40th International Conference on Software Engineering (ICSE'18) in June 2018.
Abstract:
Using university capstone courses to teach agile software development methodologies has become commonplace, as agile methods have gained support in professional software development.
This usually means students are introduced to and work with the currently most popular agile methodology: Scrum.
However, as the agile methods employed in the industry change and are adapted to different contexts, university courses must follow suit.
A prime example of this is the Kanban method, which has recently gathered attention in the industry.
In this paper, we describe a capstone course design, which adds the hands-on learning of the lean principles advocated by Kanban into a capstone project run with Scrum. This both ensures that students are aware of recent process frameworks and ideas as well as gain a more thorough overview of how agile methods can be employed in practice.
We describe the details of the course and analyze the participating students' perceptions as well as our observations. We analyze the development artifacts, created by students during the course in respect to the two different development methodologies.
We further present a summary of the lessons learned as well as recommendations for future similar courses. The survey conducted at the end of the course revealed an overwhelmingly positive attitude of students towards the integration of Kanban into the course.
Should I Bug You? Identifying Domain Experts in Software Projects Using Code...Christoph Matthies
Any sufficiently complex software system has experts, who have a deeper understanding of parts of the system than others.
However, it is not always clear who these experts are and which particular parts of the system they can provide help with.
We propose a framework to elicit the expertise of developers and recommend experts by analyzing the development of code complexity measures over time, by author as well as on the component level.
Teams can use this approach to detect those parts of the software for which currently no, or only few experts exist and can take preventive actions to keep the collective code knowledge and ownership high.
We employed the developed approach at a medium-sized company.
The results were evaluated with a survey, comparing the perceived and the computed expertise of developers.
We show that aggregated code metrics can be used to identify experts for different software components.
The identified experts were rated as acceptable candidates by developers in over 90% of all cases.
Slides for a short talk on the big ideas, principles and practices of Lean Software and Kanban.
Includes examples of Kanban boards, an example of Kanban metrics using a Cumulative Flow Diagrams and a great Kanban comic by Henrik Kniberg.
Lightweight Collection and Storage of Software Repository Data with DataRoverChristoph Matthies
The ease of setting up collaboration infrastructures for software engineering projects creates a challenge for researchers that aim to analyze the resulting data. As teams can choose from various available software-as-a-service solutions and can configure them with a few clicks, researchers have to create and maintain multiple implementations for collecting and aggregating the collaboration data in order to perform their analyses across different setups.
The DataRover system simplifies this task by only requiring custom source code for API authentication and querying. Data transformation and linkage is performed based on mappings, which users can define based on sample responses through a graphical front end. This allows storing the same input data in formats and databases most suitable for the intended analysis without requiring additional coding.
A screencast of DataRover is available at https://youtu.be/mt4ztff4SfU.
DataRover is available at: https://bitbucket.org/tkowark/data-rover
Pybelsberg is a project allowing constraint-based programming in Python using the Z3 theorem prover [1].
It is available on Github [2] and is licensed under the BSD 3-Clause License.
By Robert Lehmann, Christoph Matthies, Conrad Calmez, Thomas Hille.
See also Babelsberg/R [4] and Babelsberg/JS [5].
[1] https://github.com/Z3Prover/z3
[2] https://github.com/babelsberg/pybelsberg
[3] http://opensource.org/licenses/BSD-3-Clause
[4] https://github.com/timfel/babelsberg-r
[5] https://github.com/timfel/babelsberg-js
Excerpt from slides used in undergraduate software engineering lectures.
Our favorite git tricks, git commands and utilities that make working with git easier.
Updated June 2015.
How to reverse engineer Android applications—using a popular word game as an ...Christoph Matthies
Short introduction to the basic methods and techniques used in reverse engineering Android applications. A popular word game is used as an example app.
The slides describe obtaining the application code, decompiling it, debugging Android applications, using a proxy server (Man-in-the-Middle) to extract communication protocols and automating Android applications.
Published under CC BY-NC-SA 3.0
Beat Your Mom At Solitaire—Reverse Engineering of Computer GamesChristoph Matthies
An overview of the methods used to reverse engineer computer games. Special focus is put on using memory manipulation at runtime to cheat at games as well as the countermeasures deployed by game developers.
Christoph Matthies (@chrisma0), Lukas Pirl
Published under CC BY-NC-SA 3.0
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
23. Hacker News
●
●
○
●
●
●
●
“
If you apply for YC and get
rejected, pg [Paul Graham] may
follow-up with an explanation just
because you have a high score.
25. “
Anything that good hackers would find interesting.
That includes more than hacking and startups.
If you had to reduce it to a sentence, the answer might be:
anything that gratifies one's intellectual curiosity.
64. Remember, though though
Remember,
All these effects don't have to be negative.
e.g. Information Cascade Effect can strengthen
good comments and further demote bad ones.
65. Lampe’s Solution [1] visible
hidden
Adjust the damn comment filter.
before
most recent
after
recently written recently moderated
71. cheating, the secret sauce
(def vote-for (user i (o dir 'up))
● karma bombing prevention
(unless (or ((votes user) i!id)
(and (~live i) (isnt user i!by)))
○ prevent cabal against individual users
(withs (ip (logins* user)
● downvote ratio
vote (list (seconds) ip user dir i!score))
(unless (or (and (or (ignored user) (check-key user 'novote))
○ cannot cast too many downvotes
(isnt user i!by))
(and (is dir 'down)
● sockpuppet protection (~editor user)
(or (check-key user 'nodowns)
(> (downvote-ratio user) downvote-ratio-limit*)
; prevention of karma-bombing
(just-downvoted user i!by)))
(and (~legit-user user)
(isnt user i!by)
(find [is (cadr _) ip] i!votes))
(and (isnt i!type 'pollopt)
(biased-voter i vote)))
(++ i!score (case dir up 1 down -1))
72. and now a word from CmdrTaco
rigorous checks for legit posts
● HTTP Proxy
● maximum number of posts per day
● "trollishness"
○ half-lived amount of downvotes
if ($constants->{comments_portscan}
● compresses too well (with Zlib) && ( $constants->{comments_portscan} == 2
|| $constants->{comments_portscan} == 1 &&
○ ASCII art $user->{is_anon} )
) {
my $is_trusted = $slashdb->checkAL2($user->{srcids},
"nobody should be using that many wide
'trusted');
characters in the Standard English alphabet"
if (!$is_trusted) {
my $is_proxy = $slashdb->checkForOpenProxy
($user->{hostip});
if ($is_proxy) {
$$error_message = getError('open proxy', {
Anonymous Cowards punished harder. unencoded_ip
port
=> $ENV{REMOTE_ADDR},
=> $is_proxy,
});
$form_success = 0;
return;
}
}
}
73. and now a word from CmdrTaco
rigorous filters for legit posts
● 7 whitespaces in the subject
lots of space in the subject ... lots of space in the head.
● more than one character
one character. Hmmm. Gee, might this be a troll?
● words longer than 80 letters if ($constants->{comments_portscan}
&& ( $constants->{comments_portscan} == 2
that's an awful long string of letters there! || $constants->{comments_portscan} == 1 &&
$user->{is_anon} )
● 50% caps ) {
my $is_trusted = $slashdb->checkAL2($user->{srcids},
'trusted');
PLEASE DON'T USE SO MANY CAPS. if (!$is_trusted) {
USING CAPS IS LIKE YELLING! my $is_proxy = $slashdb->checkForOpenProxy
($user->{hostip});
● "feces", "goatse.cx" if ($is_proxy) {
$$error_message = getError('open proxy', {
unencoded_ip => $ENV{REMOTE_ADDR},
too smelly to submit port => $is_proxy,
});
$form_success = 0;
return;
}
}
}
75. Use -f to forcibly slap
warning if a user has more than 10 Karma
● Karma: Terrible (-10) ● Karma: Terrible (-10)
● default comment ● revoke all
score of -1 moderation points
● set all comment
scores to Offtopic (-1)
76. nuke
blast blast
kill submission +ban the site
+
ban user
77. hellbanning
●
●
●
●
“
a hellbanned user is likely to get bored or
frustrated and leave [...]
the silent treatment is the cruelest
punishment of them all. [1]
— Jeff Atwood
86. unless ($opts{'f'}) {
die <<ERR if $user->{karma} > 10;
User $_ has a karma of $user->{karma}. Slap aborted. Use -f to forcibly slap.
ERR
}
print "Bitch Slapping #$_...n";
print "Karma Reducedn";
print "Default Score Reducedn";
$slashdb->setUser($_, {
-karma => $constants->{badkarma},
-defaultpoints => -1,
});
print "ALL live comments moderated downnn";
$slashdb->sqlDo("UPDATE comments SET points=-1,reason=1 WHERE uid=$_");
Exhibit A — source of bitchslap (Slashdot)